Added power monitor its own message buffer

This commit is contained in:
Your Name
2026-10-04 16:04:05 +03:00
parent 9f8b9f7715
commit 5d511f3aca
3 changed files with 29 additions and 9 deletions
+4 -5
View File
@@ -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;
+24 -4
View File
@@ -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;
}
+1
View File
@@ -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