Quellcode durchsuchen

v1&v2 升级到v3需要把以前的电量和SN,校准标志写入新版本的nv中

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui vor 5 Jahren
Ursprung
Commit
c015db7f0b
2 geänderte Dateien mit 17 neuen und 0 gelöschten Zeilen
  1. 7 0
      Application/app/bms_message.c
  2. 10 0
      Application/app/protocol.h

+ 7 - 0
Application/app/bms_message.c

@@ -215,6 +215,13 @@ void process_bms_message(can_frame_t *frame, int len){
 			}
 			protocol_send_ack(frame->head.can_addr, frame->key, result);
 			break;
+		case CAN_KEY_RESTORE_NV: {
+			restore_nv_cmd_t *nv = (restore_nv_cmd_t *)frame->data;
+			nv_save_sn(nv->sn, nv->sn_len);
+			soc_restore_by_iap(nv->flags, nv->capacity);
+			protocol_send_ack(frame->head.can_addr, frame->key, 1);
+			break;
+		}
 	}
 }
 

+ 10 - 0
Application/app/protocol.h

@@ -140,6 +140,16 @@ typedef struct {
 
 #define CAN_KEY_PCBA_TEST 0xa9
 
+#define CAN_KEY_RESTORE_NV 0xaa /* v1/v2升级到v3使用 */
+#pragma  pack (push,1)
+typedef struct {
+	uint8_t  flags;// 1 表示已经校准, 0 未校准
+	uint8_t  capacity;
+	uint8_t  sn_len;
+	uint8_t  sn[24];
+}restore_nv_cmd_t;
+#pragma pack(pop)
+
 #define CAN_KEY_IAP_ENTER   0xF0
 #define CAN_KEY_IAP_BEGIN   0xF1
 #define CAN_KEY_IAP_CHECK   0xF2