Update IC acknowledgements for write/read IC.

This commit is contained in:
Musa Mahmood 2025-04-19 12:13:42 -04:00
parent dad3d7d48d
commit 0fcbbf06bf
2 changed files with 34 additions and 29 deletions

61
main.c
View File

@ -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:

View File

@ -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 %%%