| 1234567891011121314151617181920212223242526272829303132333435 |
- #include "pc_message.h"
- #include "pcba_test.h"
- #include "app/sox/measure.h"
- #include "bsp/cs1180.h"
- int process_pc_message(can_frame_t *frame, int len){
- int processed = 0;
- if (frame->key == CAN_KEY_PCBA_TEST) {
- uint8_t response[16];
- int resp_len = pcba_test(frame->data, len, response);
- protocol_send_bms_info(frame->head.can_addr, frame->key, response, resp_len);
- processed = 1;
- }else if (frame->key == CAN_KEY_START_CALI) {
- uint8_t result = 0;
- if (len != sizeof(cali_cmd_t)) {
- current_calibrate();//just for debug
- cs1180_adc_init();
- result = 1;
- }else {
- cali_cmd_t * cmd = (cali_cmd_t *)frame->data;
- uint8_t adc = cmd->flags & 0x01;
- uint8_t flags = ((cmd->flags>>1) & 0x03);
- if (flags == 1) {
- result = measure_start_cali(adc, cmd->gain, cmd->totol_samples);
- }else if (flags == 2) {
- result = measure_continue_cali(adc, cmd->voltage, cmd->current);
- }else {
- result = measure_stop_cali(adc, cmd->gain);
- }
- }
- protocol_send_ack(frame->head.can_addr, frame->key, result);
- processed = 1;
- }
- return processed;
- }
|