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; struct k_timer adc_timer;
// ADC BUFFER // ADC BUFFER
#define ADC_BUFFER_SIZE 10 #define ADC_MSG_BUFFER_SIZE 10
struct command_message_t adc_msg_buffer[ADC_BUFFER_SIZE]; struct command_message_t adc_msg_buffer[ADC_MSG_BUFFER_SIZE];
struct command_message_t *adc_msg_buffer_ptr; struct command_message_t *adc_msg_buffer_ptr;
int *adc_data_type;
static void adc_timer_handler(struct k_timer *timer) { 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); usb_send_command(adc_msg_buffer_ptr);
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; adc_msg_buffer_ptr = adc_msg_buffer;
} }
} }
@@ -229,7 +228,7 @@ void* adc_get_buffer() {
ptr--; ptr--;
if (ptr < &adc_msg_buffer[0]) { 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; 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 #define POWER_MONITOR_THREAD_PRIORITY 5
K_THREAD_STACK_DEFINE(power_monitor_thread_stack, POWER_MONITOR_THREAD_STACK_SIZE); K_THREAD_STACK_DEFINE(power_monitor_thread_stack, POWER_MONITOR_THREAD_STACK_SIZE);
// ADC TIMER // TIMER
struct k_timer power_monitor_timer; struct k_timer power_monitor_timer;
struct k_sem power_monitor_semaphore; 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) { static void power_monitor_timer_handler(struct k_timer *timer) {
// Timer trigger // 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]); sensor_channel_get(power_monitor_dt, SENSOR_CHAN_POWER, &values[2][2]);
// Send to USB // Send to USB
struct command_message_t *msg = usb_get_next_tx_buf(); command_create_message(pwr_msg_buffer_ptr, sizeof(values), POWER_MONITOR_READ, (uint8_t *)values);
command_create_message(msg, sizeof(values), POWER_MONITOR_READ, (uint8_t *)values); usb_send_command(pwr_msg_buffer_ptr);
usb_send_command(msg); pwr_msg_buffer_ptr++;
if (pwr_msg_buffer_ptr > &pwr_msg_buffer[PWR_MSG_BUFFER_SIZE-1]) {
pwr_msg_buffer_ptr = pwr_msg_buffer;
}
} }
} }
@@ -107,3 +116,14 @@ int power_monitor_timer_set(int interval_ms) {
return 0; 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_init();
int power_monitor_timer_set(int interval_ms); int power_monitor_timer_set(int interval_ms);
void* power_monitor_get_buffer();
#endif // POWER_MONITOR_H #endif // POWER_MONITOR_H