diff --git a/servo_controller/src/adc.c b/servo_controller/src/adc.c index 8290867..a5f6d81 100644 --- a/servo_controller/src/adc.c +++ b/servo_controller/src/adc.c @@ -36,10 +36,9 @@ struct k_msgq adc_mask_msgq; struct k_timer adc_timer; // ADC BUFFER -#define ADC_BUFFER_SIZE 10 -struct command_message_t adc_msg_buffer[ADC_BUFFER_SIZE]; +#define ADC_MSG_BUFFER_SIZE 10 +struct command_message_t adc_msg_buffer[ADC_MSG_BUFFER_SIZE]; struct command_message_t *adc_msg_buffer_ptr; -int *adc_data_type; static void adc_timer_handler(struct k_timer *timer) { @@ -77,7 +76,7 @@ static void adc_thread(void *p1, void *p2, void *p3) { usb_send_command(adc_msg_buffer_ptr); adc_msg_buffer_ptr++; - if (adc_msg_buffer_ptr > &adc_msg_buffer[ADC_BUFFER_SIZE-1]) { + if (adc_msg_buffer_ptr > &adc_msg_buffer[ADC_MSG_BUFFER_SIZE-1]) { adc_msg_buffer_ptr = adc_msg_buffer; } } @@ -229,7 +228,7 @@ void* adc_get_buffer() { ptr--; if (ptr < &adc_msg_buffer[0]) { - ptr = &adc_msg_buffer[ADC_BUFFER_SIZE-1]; + ptr = &adc_msg_buffer[ADC_MSG_BUFFER_SIZE-1]; } return (void *)ptr; diff --git a/servo_controller/src/power_monitor.c b/servo_controller/src/power_monitor.c index 35d7a8b..8ae364f 100644 --- a/servo_controller/src/power_monitor.c +++ b/servo_controller/src/power_monitor.c @@ -19,10 +19,15 @@ static k_tid_t power_monitor_thread_id = NULL; #define POWER_MONITOR_THREAD_PRIORITY 5 K_THREAD_STACK_DEFINE(power_monitor_thread_stack, POWER_MONITOR_THREAD_STACK_SIZE); -// ADC TIMER +// TIMER struct k_timer power_monitor_timer; struct k_sem power_monitor_semaphore; +// BUFFER +#define PWR_MSG_BUFFER_SIZE 10 +struct command_message_t pwr_msg_buffer[PWR_MSG_BUFFER_SIZE]; +struct command_message_t *pwr_msg_buffer_ptr; + static void power_monitor_timer_handler(struct k_timer *timer) { // Timer trigger @@ -62,9 +67,13 @@ static void power_monitor_thread(void *p1, void *p2, void *p3) { sensor_channel_get(power_monitor_dt, SENSOR_CHAN_POWER, &values[2][2]); // Send to USB - struct command_message_t *msg = usb_get_next_tx_buf(); - command_create_message(msg, sizeof(values), POWER_MONITOR_READ, (uint8_t *)values); - usb_send_command(msg); + command_create_message(pwr_msg_buffer_ptr, sizeof(values), POWER_MONITOR_READ, (uint8_t *)values); + usb_send_command(pwr_msg_buffer_ptr); + pwr_msg_buffer_ptr++; + + if (pwr_msg_buffer_ptr > &pwr_msg_buffer[PWR_MSG_BUFFER_SIZE-1]) { + pwr_msg_buffer_ptr = pwr_msg_buffer; + } } } @@ -106,4 +115,15 @@ int power_monitor_timer_set(int interval_ms) { } return 0; +} + +void* power_monitor_get_buffer() { + struct command_message_t *ptr = pwr_msg_buffer_ptr; + ptr--; + + if (ptr < &pwr_msg_buffer[0]) { + ptr = &pwr_msg_buffer[PWR_MSG_BUFFER_SIZE-1]; + } + + return (void *)ptr; } \ No newline at end of file diff --git a/servo_controller/src/power_monitor.h b/servo_controller/src/power_monitor.h index e1bbf13..3849e76 100644 --- a/servo_controller/src/power_monitor.h +++ b/servo_controller/src/power_monitor.h @@ -4,6 +4,7 @@ int power_monitor_init(); int power_monitor_timer_set(int interval_ms); +void* power_monitor_get_buffer(); #endif // POWER_MONITOR_H \ No newline at end of file