|
@ -49,8 +49,8 @@ static void send_success_receipt(ify_hrs_packet_t* rxpacket) { |
|
|
void ble_cmder_process_rx(uint8_t* rx, int len) { |
|
|
void ble_cmder_process_rx(uint8_t* rx, int len) { |
|
|
ify_hrs_packet_t* rxheader = (ify_hrs_packet_t*)rx; |
|
|
ify_hrs_packet_t* rxheader = (ify_hrs_packet_t*)rx; |
|
|
ify_hrs_packet_t* txheader = (ify_hrs_packet_t*)txbuf; |
|
|
ify_hrs_packet_t* txheader = (ify_hrs_packet_t*)txbuf; |
|
|
|
|
|
|
|
|
ify_hrs_cmd_t cmd = (ify_hrs_cmd_t)rxheader->cmd; |
|
|
|
|
|
|
|
|
ify_hrs_cmd_t cmd = (ify_hrs_cmd_t)rxheader->cmd; |
|
|
|
|
|
memset(txbuf, 0, sizeof(txbuf)); |
|
|
|
|
|
|
|
|
txheader->cmd = rxheader->cmd; |
|
|
txheader->cmd = rxheader->cmd; |
|
|
txheader->frame_index = rxheader->frame_index; |
|
|
txheader->frame_index = rxheader->frame_index; |
|
@ -59,8 +59,6 @@ void ble_cmder_process_rx(uint8_t* rx, int len) { |
|
|
ZLOGI("rx cmd:%d index:%d datalen:%d", cmd, rxheader->frame_index, len - sizeof(ify_hrs_packet_t)); |
|
|
ZLOGI("rx cmd:%d index:%d datalen:%d", cmd, rxheader->frame_index, len - sizeof(ify_hrs_packet_t)); |
|
|
NRF_LOG_HEXDUMP_INFO(rxheader->data, len - sizeof(ify_hrs_packet_t)); |
|
|
NRF_LOG_HEXDUMP_INFO(rxheader->data, len - sizeof(ify_hrs_packet_t)); |
|
|
|
|
|
|
|
|
memset(txbuf, 0, sizeof(txbuf)); |
|
|
|
|
|
|
|
|
|
|
|
if (cmd == ify_hrs_cmd_read_device_version) { |
|
|
if (cmd == ify_hrs_cmd_read_device_version) { |
|
|
device_version_info_receipt_t* receipt = (device_version_info_receipt_t*)txheader->data; |
|
|
device_version_info_receipt_t* receipt = (device_version_info_receipt_t*)txheader->data; |
|
|
uint16_t sendlen = sizeof(ify_hrs_packet_t) + sizeof(device_version_info_receipt_t); |
|
|
uint16_t sendlen = sizeof(ify_hrs_packet_t) + sizeof(device_version_info_receipt_t); |
|
@ -72,7 +70,7 @@ void ble_cmder_process_rx(uint8_t* rx, int len) { |
|
|
zdatachannel_data_send2(txbuf, sendlen); |
|
|
zdatachannel_data_send2(txbuf, sendlen); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
else if (ify_hrs_cmd_read_sensor_info) { |
|
|
|
|
|
|
|
|
else if (cmd == ify_hrs_cmd_read_sensor_info) { |
|
|
sensor_info_receipt_t* receipt = (sensor_info_receipt_t*)txheader->data; |
|
|
sensor_info_receipt_t* receipt = (sensor_info_receipt_t*)txheader->data; |
|
|
uint16_t sendlen = sizeof(ify_hrs_packet_t) + sizeof(sensor_info_receipt_t); |
|
|
uint16_t sendlen = sizeof(ify_hrs_packet_t) + sizeof(sensor_info_receipt_t); |
|
|
|
|
|
|
|
@ -86,22 +84,24 @@ void ble_cmder_process_rx(uint8_t* rx, int len) { |
|
|
zdatachannel_data_send2(txbuf, sendlen); |
|
|
zdatachannel_data_send2(txbuf, sendlen); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
else if (ify_hrs_cmd_read_device_state) { |
|
|
|
|
|
|
|
|
else if (cmd == ify_hrs_cmd_read_device_state) { |
|
|
device_state_receipt_t* receipt = (device_state_receipt_t*)txheader->data; |
|
|
device_state_receipt_t* receipt = (device_state_receipt_t*)txheader->data; |
|
|
uint16_t sendlen = sizeof(ify_hrs_packet_t) + sizeof(device_state_receipt_t); |
|
|
uint16_t sendlen = sizeof(ify_hrs_packet_t) + sizeof(device_state_receipt_t); |
|
|
|
|
|
|
|
|
receipt->drop0_state.drop0 = 0; |
|
|
|
|
|
receipt->device_state0.sample_state = 1; |
|
|
|
|
|
receipt->device_state0.report_state = 1; |
|
|
|
|
|
receipt->device_state0.lowbattery_state = 0; |
|
|
|
|
|
receipt->device_state0.full_storage = sample_data_mgr_storage_is_full(); |
|
|
|
|
|
receipt->powerlevel = SingleLeadECG_battery_val(); |
|
|
|
|
|
receipt->storage_item_num = sample_data_mgr_get_file_num(); |
|
|
|
|
|
|
|
|
receipt->drop_state0 |= 0x01; |
|
|
|
|
|
receipt->drop_state1 = 0x00; |
|
|
|
|
|
receipt->device_state0 = (0x01 << 0 /*设备采集*/) | // |
|
|
|
|
|
(0x01 << 1 /*设备上报*/) | // |
|
|
|
|
|
(0x00 << 2 /*低电量*/) | // |
|
|
|
|
|
(0x01 << 3 /*存储满*/); |
|
|
|
|
|
receipt->device_state1 = 0; |
|
|
|
|
|
receipt->powerlevel = SingleLeadECG_battery_val(); |
|
|
|
|
|
receipt->storage_item_num = sample_data_mgr_get_file_num(); |
|
|
|
|
|
|
|
|
zdatachannel_data_send2(txbuf, sendlen); |
|
|
zdatachannel_data_send2(txbuf, sendlen); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
else if (ify_hrs_cmd_read_time) { |
|
|
|
|
|
|
|
|
else if (cmd == ify_hrs_cmd_read_time) { |
|
|
read_time_receipt_t* receipt = (read_time_receipt_t*)txheader->data; |
|
|
read_time_receipt_t* receipt = (read_time_receipt_t*)txheader->data; |
|
|
uint16_t sendlen = sizeof(ify_hrs_packet_t) + sizeof(read_time_receipt_t); |
|
|
uint16_t sendlen = sizeof(ify_hrs_packet_t) + sizeof(read_time_receipt_t); |
|
|
static ztm_t ztm; |
|
|
static ztm_t ztm; |
|
@ -116,7 +116,7 @@ void ble_cmder_process_rx(uint8_t* rx, int len) { |
|
|
zdatachannel_data_send2(txbuf, sendlen); |
|
|
zdatachannel_data_send2(txbuf, sendlen); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
else if (ify_hrs_cmd_sync_time) { |
|
|
|
|
|
|
|
|
else if (cmd == ify_hrs_cmd_sync_time) { |
|
|
sync_time_cmd_t* cmd = (sync_time_cmd_t*)rxheader->data; |
|
|
sync_time_cmd_t* cmd = (sync_time_cmd_t*)rxheader->data; |
|
|
uint16_t sendlen = sizeof(ify_hrs_packet_t); |
|
|
uint16_t sendlen = sizeof(ify_hrs_packet_t); |
|
|
|
|
|
|
|
@ -124,15 +124,15 @@ void ble_cmder_process_rx(uint8_t* rx, int len) { |
|
|
zdatachannel_data_send2(txbuf, sendlen); |
|
|
zdatachannel_data_send2(txbuf, sendlen); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
else if (ify_hrs_cmd_start_capture) { |
|
|
|
|
|
|
|
|
else if (cmd == ify_hrs_cmd_start_capture) { |
|
|
send_error_receipt(rxheader, kifyhrs_ecode_cmd_not_support); |
|
|
send_error_receipt(rxheader, kifyhrs_ecode_cmd_not_support); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
else if (ify_hrs_cmd_stop_capture) { |
|
|
|
|
|
|
|
|
else if (cmd == ify_hrs_cmd_stop_capture) { |
|
|
send_error_receipt(rxheader, kifyhrs_ecode_cmd_not_support); |
|
|
send_error_receipt(rxheader, kifyhrs_ecode_cmd_not_support); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
else if (ify_hrs_cmd_start_realtime_report) { |
|
|
|
|
|
|
|
|
else if (cmd == ify_hrs_cmd_start_realtime_report) { |
|
|
// unsupport cmd |
|
|
// unsupport cmd |
|
|
int ecode = ble_start_realtime_report(); |
|
|
int ecode = ble_start_realtime_report(); |
|
|
if (ecode == 0) { |
|
|
if (ecode == 0) { |
|
@ -142,7 +142,7 @@ void ble_cmder_process_rx(uint8_t* rx, int len) { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
else if (ify_hrs_cmd_stop_realtime_report) { |
|
|
|
|
|
|
|
|
else if (cmd == ify_hrs_cmd_stop_realtime_report) { |
|
|
int ecode = ble_stop_realtime_report(); |
|
|
int ecode = ble_stop_realtime_report(); |
|
|
if (ecode == 0) { |
|
|
if (ecode == 0) { |
|
|
send_success_receipt(rxheader); |
|
|
send_success_receipt(rxheader); |
|
@ -151,7 +151,7 @@ void ble_cmder_process_rx(uint8_t* rx, int len) { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
else if (ify_hrs_cmd_read_records_info) { |
|
|
|
|
|
|
|
|
else if (cmd == ify_hrs_cmd_read_records_info) { |
|
|
// send_error_receipt(rxheader, kifyhrs_ecode_cmd_not_support); |
|
|
// send_error_receipt(rxheader, kifyhrs_ecode_cmd_not_support); |
|
|
read_record_info_cmd_t* cmd = (read_record_info_cmd_t*)rxheader->data; |
|
|
read_record_info_cmd_t* cmd = (read_record_info_cmd_t*)rxheader->data; |
|
|
read_record_info_receipt_t* receipt = (read_record_info_receipt_t*)txheader->data; |
|
|
read_record_info_receipt_t* receipt = (read_record_info_receipt_t*)txheader->data; |
|
@ -166,7 +166,7 @@ void ble_cmder_process_rx(uint8_t* rx, int len) { |
|
|
|
|
|
|
|
|
sample_data_fileinfo_t* fileinfo = recordlist->fileinfo[recordoff]; |
|
|
sample_data_fileinfo_t* fileinfo = recordlist->fileinfo[recordoff]; |
|
|
memcpy(receipt->record_id, fileinfo->filename, 6); |
|
|
memcpy(receipt->record_id, fileinfo->filename, 6); |
|
|
receipt->frameNum = fileinfo->size / 16; // 16 bytes per frame |
|
|
|
|
|
|
|
|
receipt->frameNum = fileinfo->size / 2; // 2byte per frame |
|
|
receipt->dataSize = fileinfo->size; |
|
|
receipt->dataSize = fileinfo->size; |
|
|
receipt->sensorNum = 1; |
|
|
receipt->sensorNum = 1; |
|
|
receipt->captureRate = SAMPLE_RATE / 10; |
|
|
receipt->captureRate = SAMPLE_RATE / 10; |
|
@ -177,7 +177,7 @@ void ble_cmder_process_rx(uint8_t* rx, int len) { |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
else if (ify_hrs_cmd_del_record) { |
|
|
|
|
|
|
|
|
else if (cmd == ify_hrs_cmd_del_record) { |
|
|
del_record_cmd_t* cmd = (del_record_cmd_t*)rxheader->data; |
|
|
del_record_cmd_t* cmd = (del_record_cmd_t*)rxheader->data; |
|
|
|
|
|
|
|
|
static sample_data_filename_t filename; |
|
|
static sample_data_filename_t filename; |
|
@ -192,7 +192,7 @@ void ble_cmder_process_rx(uint8_t* rx, int len) { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
else if (ify_hrs_cmd_start_upload_record) { |
|
|
|
|
|
|
|
|
else if (cmd == ify_hrs_cmd_start_upload_record) { |
|
|
start_upload_record_cmd_t* cmd = (start_upload_record_cmd_t*)rxheader->data; |
|
|
start_upload_record_cmd_t* cmd = (start_upload_record_cmd_t*)rxheader->data; |
|
|
|
|
|
|
|
|
static sample_data_filename_t filename; |
|
|
static sample_data_filename_t filename; |
|
@ -207,18 +207,18 @@ void ble_cmder_process_rx(uint8_t* rx, int len) { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
else if (ify_hrs_cmd_enter_ota) { |
|
|
|
|
|
|
|
|
else if (cmd == ify_hrs_cmd_enter_ota) { |
|
|
send_error_receipt(rxheader, kifyhrs_ecode_cmd_not_support); |
|
|
send_error_receipt(rxheader, kifyhrs_ecode_cmd_not_support); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
else if (ify_hrs_cmd_read_sn) { |
|
|
|
|
|
|
|
|
else if (cmd == ify_hrs_cmd_read_sn) { |
|
|
read_sn_receipt_t* receipt = (read_sn_receipt_t*)txheader->data; |
|
|
read_sn_receipt_t* receipt = (read_sn_receipt_t*)txheader->data; |
|
|
uint16_t sendlen = sizeof(ify_hrs_packet_t) + sizeof(read_sn_receipt_t); |
|
|
uint16_t sendlen = sizeof(ify_hrs_packet_t) + sizeof(read_sn_receipt_t); |
|
|
device_info_read_sn((sn_t*)&receipt->sn); |
|
|
device_info_read_sn((sn_t*)&receipt->sn); |
|
|
zdatachannel_data_send2(txbuf, sendlen); |
|
|
zdatachannel_data_send2(txbuf, sendlen); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
else if (ify_hrs_cmd_reset) { |
|
|
|
|
|
|
|
|
else if (cmd == ify_hrs_cmd_reset) { |
|
|
NVIC_SystemReset(); |
|
|
NVIC_SystemReset(); |
|
|
} |
|
|
} |
|
|
// |
|
|
// |
|
|