Update IC acknowledgements for write/read IC.
This commit is contained in:
parent
dad3d7d48d
commit
0fcbbf06bf
61
main.c
61
main.c
@ -94,35 +94,14 @@ void reset_counters(void) {
|
||||
#endif
|
||||
}
|
||||
|
||||
// For sending two-byte prefixed messages
|
||||
void usb_send_push_ex(uint8_t message_prefix, uint8_t message_part_two, uint8_t* message, uint8_t message_length) {
|
||||
usb_send_buffer[0] = message_prefix;
|
||||
usb_send_buffer[1] = message_part_two;
|
||||
usb_send_buffer[2] = message_length + 3;
|
||||
memcpy(&usb_send_buffer[3], message, message_length);
|
||||
ret_code_t ret = app_usbd_cdc_acm_write(&m_app_cdc_acm, usb_send_buffer, message_length + 3);
|
||||
|
||||
NRF_LOG_INFO("[ex]Writing message of length %d, ret: %d", message_length + 3, ret);
|
||||
}
|
||||
|
||||
// void usb_transmit_message(uint8_t message_prefix, uint8_t* message, uint8_t message_length) {
|
||||
// usb_send_buffer[0] = message_prefix;
|
||||
// usb_send_buffer[1] = message_length + 2;
|
||||
// memcpy(&usb_send_buffer[2], message, message_length);
|
||||
// ret_code_t ret = app_usbd_cdc_acm_write(&m_app_cdc_acm, usb_send_buffer, message_length + 2);
|
||||
|
||||
// NRF_LOG_INFO("[0]Writing message of length %d, ret: %d", message_length + 2, ret);
|
||||
// #DO NOT USE THIS. IT BREAKS THE PACKET FORMAT. USE
|
||||
// void usb_send_message_1byte(uint8_t message) {
|
||||
// usb_send_buffer[0] = message;
|
||||
// ret_code_t ret = app_usbd_cdc_acm_write(&m_app_cdc_acm, usb_send_buffer, 1);
|
||||
// NRF_LOG_INFO("[push]Writing message of length %d, ret: %d", 1, ret);
|
||||
// }
|
||||
|
||||
void usb_send_push(void) {
|
||||
ret_code_t ret = app_usbd_cdc_acm_write(&m_app_cdc_acm, usb_send_buffer, usb_send_buffer_offset);
|
||||
|
||||
NRF_LOG_INFO("[1]Writing message of length %d, ret: %d", usb_send_buffer_offset, ret);
|
||||
|
||||
usb_send_buffer_offset = 0; // reset.
|
||||
}
|
||||
|
||||
// For mushing together small messages into a 64-byte packet:
|
||||
// 1. For mushing together small messages into a 64-byte packet:
|
||||
void usb_send_append_message(uint8_t message_prefix, uint8_t* message, uint8_t message_length) {
|
||||
usb_send_buffer[usb_send_buffer_offset] = message_prefix;
|
||||
usb_send_buffer[usb_send_buffer_offset + 1] = message_length + 2;
|
||||
@ -136,6 +115,28 @@ void usb_send_append_message(uint8_t message_prefix, uint8_t* message, uint8_t m
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 2. For pushing all messages queued with usb_send_append_message
|
||||
void usb_send_push(void) {
|
||||
ret_code_t ret = app_usbd_cdc_acm_write(&m_app_cdc_acm, usb_send_buffer, usb_send_buffer_offset);
|
||||
|
||||
NRF_LOG_INFO("[push]Writing message of length %d, ret: %d", usb_send_buffer_offset, ret);
|
||||
|
||||
usb_send_buffer_offset = 0; // reset.
|
||||
}
|
||||
|
||||
// 3. For sending two-byte prefixed messages
|
||||
void usb_send_push_ex(uint8_t message_prefix, uint8_t message_part_two, uint8_t* message, uint8_t message_length) {
|
||||
usb_send_buffer[0] = message_prefix;
|
||||
usb_send_buffer[1] = message_part_two;
|
||||
usb_send_buffer[2] = message_length + 3;
|
||||
memcpy(&usb_send_buffer[3], message, message_length);
|
||||
ret_code_t ret = app_usbd_cdc_acm_write(&m_app_cdc_acm, usb_send_buffer, message_length + 3);
|
||||
|
||||
NRF_LOG_INFO("[push ex]Writing message of length %d, ret: %d", message_length + 3, ret);
|
||||
}
|
||||
|
||||
|
||||
// length is always `READ_SIZE`
|
||||
void write_ic_settings(uint8_t* new_packet) {
|
||||
switch (SECOND_NIBBLE(new_packet[0])) {
|
||||
@ -151,6 +152,8 @@ void write_ic_settings(uint8_t* new_packet) {
|
||||
ads1298_start_rdatac();
|
||||
ads1298_standby();
|
||||
// #TODO: readback registers into m_info.registers to confirm correct write.
|
||||
uint8_t message[] = {0x00}; // LENGTH OF ZERO.
|
||||
usb_send_push_ex(CTRL_ACK_WRITE_IC_REGISTER, IC_ID_ADS1298, message, strlen(message));
|
||||
#endif
|
||||
} break;
|
||||
default:
|
||||
@ -235,7 +238,9 @@ static void process_new_packet(uint8_t* new_packet) {
|
||||
run_throughput_test = true;
|
||||
}
|
||||
if (SECOND_NIBBLE(new_packet[0]) == TN_MISC_RTT_REQUEST) {
|
||||
// [↓] #TODO [Later]
|
||||
uint8_t message[] = {0x00}; // LENGTH OF ZERO.
|
||||
usb_send_append_message(CTRL_ACK_RTT_REQUEST, message, strlen(message));
|
||||
usb_send_push();
|
||||
}
|
||||
} break;
|
||||
default:
|
||||
|
||||
@ -59,7 +59,7 @@
|
||||
// some devices have more than 62 bytes worth of registers, so it may
|
||||
// need to be split up into pages.
|
||||
#define CTRL_REGISTER_READBACK 0xC8
|
||||
|
||||
#define CTRL_ACK_WRITE_IC_REGISTER 0xDF
|
||||
#define CTRL_ACK_RTT_REQUEST 0xE0
|
||||
|
||||
// %%% IC Identifiers %%%
|
||||
|
||||
Loading…
Reference in New Issue
Block a user