From: penglei <1624952103@qq.com> Date: Mon, 1 Apr 2024 01:17:53 +0000 (+0800) Subject: 蓝牙产测 X-Git-Tag: release_V1.2.70_20241020_135402~1245 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=bd15b1bac3f7bfe7163deeb458ab4ddd99ce05c5;p=mirrors%2FFD230.git 蓝牙产测 --- bd15b1bac3f7bfe7163deeb458ab4ddd99ce05c5 diff --cc code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c index 3c6c55aed,d6b2e0de7..72ba48f2b --- a/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c +++ b/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c @@@ -31,40 -18,21 +31,36 @@@ typedef struct factorytest_cmd_header_ }factorytest_cmd_header_t; #pragma pack() +static osTimerId_t g_ble_vibrator_timer; + +static osTimerId_t g_ble_acc_timer; + +static osTimerId_t g_ble_hrs_timer; +static osTimerId_t g_ble_spo2_timer; +static osTimerId_t g_ble_graycard_timer; +static osTimerId_t g_ble_leaklight_timer; + +static uint8_t graycard_flag = 0; +static uint8_t leaklight_flag = 0; + +static uint16_t cycle_time_ms = 200; +static uint16_t duty = 20; + - uint16_t modbus_crc16(uint8_t *data, uint16_t length) { - uint8_t crc_hi = 0xFF; - uint8_t crc_lo = 0xFF; - int i; - - while (length--) { - crc_hi ^= *data++; - for (i = 0; i < 8; i++) { - if (crc_hi & 0x80) { - crc_hi = (crc_hi << 1) ^ 0x8005; - } else { - crc_hi <<= 1; - } - } - } - - return (crc_hi << 8) | crc_lo; - } - + static int CRC16_XMODEM(uint8_t *bytes,uint16_t length) { + int crc = 0x0000; // initial value + int polynomial = 0x1021; + for (int index = 0; index < length; index++) { + uint8_t b = bytes[index]; + for (int i = 0; i < 8; i++) { + uint8_t bit = ((b >> (7 - i) & 1) == 1); + uint8_t c15 = ((crc >> 15 & 1) == 1); + crc <<= 1; + if (c15 ^ bit) crc ^= polynomial; + } + } + crc &= 0xffff; + return crc; + } errcode_t factorytest_protocol_replymsg(uint8_t mode, uint8_t submode,uint8_t testitem, uint8_t *input_data,uint16_t input_len) { @@@ -83,16 -62,14 +79,16 @@@ if (input_len>0) memcpy_s(replybuf+1+2+1+1+1/*header+len+mode+submod+testitem*/,input_len,input_data,input_len); //计算除了crc外的所有数据 - uint16_t crc16 = modbus_crc16(replybuf,total_len - 2); + uint16_t crc16 = CRC16_XMODEM(replybuf,total_len - 2); - replybuf[total_len-1] = ((uint8_t *) &crc16 )[0]; - replybuf[total_len-2] = ((uint8_t *) &crc16 )[1]; - for ( int i = 0; ilen); + uint8_t t = plen[0]; + plen[0] = plen[1]; + plen[1] = t; + + replybuf[(total_len-1)] = ((uint8_t *) &crc16 )[0]; + replybuf[(total_len-2)] = ((uint8_t *) &crc16 )[1]; + ret = ble_factorytest_server_send_input_report(replybuf,total_len); free(replybuf); return ret;