5 float voltage; /* AD result of measured voltage */
6 float current; /* AD result of measured current */
7 uint32_t counter; /* A counter value */
10 osMailQDef(mail_box, 16, mail_t);
13 void send_thread (void const *argument) {
16 i++; // fake data update
17 mail_t *mail = (mail_t*)osMailAlloc(mail_box, osWaitForever);
18 mail->voltage = (i * 0.1) * 33;
19 mail->current = (i * 0.1) * 11;
21 osMailPut(mail_box, mail);
26 osThreadDef(send_thread, osPriorityNormal, DEFAULT_STACK_SIZE);
29 mail_box = osMailCreate(osMailQ(mail_box), NULL);
30 osThreadCreate(osThread(send_thread), NULL);
33 osEvent evt = osMailGet(mail_box, osWaitForever);
34 if (evt.status == osEventMail) {
35 mail_t *mail = (mail_t*)evt.value.p;
36 printf("\nVoltage: %.2f V\n\r" , mail->voltage);
37 printf("Current: %.2f A\n\r" , mail->current);
38 printf("Number of cycles: %u\n\r", mail->counter);
40 osMailFree(mail_box, mail);