Added power monitor its own message buffer
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -106,4 +115,15 @@ 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;
|
||||||
}
|
}
|
||||||
@@ -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
|
||||||
Reference in New Issue
Block a user