void consumeDataFromHost(DataT *ptrToDataFromHost) { if (ptrToDataFromHost != NULL) { // For now, we simply run the RPN calculator as a demonstration. // Example: Processing received input via RPN Calculator. int result = RPN_calculator(ptrToDataFromHost->payload); chsprintf(myData.payload, "%d", result); myData.length = log(result)/log(10) + 1; // Count number of characters of the result. } }
void commandRPNCalculator(BaseSequentialStream *chp, int argc, char *argv[]) { (void)argc; (void)argv; if (argc == 3) { char buffer[200]; chsprintf(buffer, "%s %s %s\0", argv[0], argv[1], argv[2]); int result = RPN_calculator(buffer); chprintf(chp, "RPN result = %d", result); chprintf(chp, "\r\n"); } }
/* Thread used for read data from sonar */ static msg_t irThread(void *arg) { (void) arg; char buf[40]; /* * Activates the ADC1 driver. */ adcStart(&ADCD1, NULL); adcStartConversion(&ADCD1, &adc_grpcfg, (adcsample_t *)&ir_data, ADC_BUF_DEPTH); while (TRUE) { chsprintf(buf, "[IR] N:%d,S:%d,W:%d,E:%d", ir_data.north, ir_data.south, ir_data.west, ir_data.east); bufferPutString(&outputBuffer, buf); chThdSleepMilliseconds(50); } return 0; }
void consumeDataFromHost(DataT *ptrToDataFromHost) { if (ptrToDataFromHost != NULL) { #if USE_RPN_CALCULATOR && !USE_PROTOCOL_EXAMPLE // For now, we simply run the RPN calculator as a demonstration. // Example: Processing received input via RPN Calculator. int result = RPN_calculator(ptrToDataFromHost->payload); chsprintf(myData.payload, "%d", result); myData.length = log(result)/log(10) + 1; // Count number of characters of the result. #endif #if !USE_RPN_CALCULATOR && USE_PROTOCOL_EXAMPLE // Use the Google protobuf example here. struct ToSTM32F4Board toBoard; ToSTM32F4Board_read_delimited_from(ptrToDataFromHost->payload, &toBoard, 0); struct FromSTM32F4Board fromBoard; fromBoard._sum = toBoard._summand1 + toBoard._summand2; myData.length = FromSTM32F4Board_write_delimited_to(&fromBoard, myData.payload, 0); #endif } }
void linear_rail_watchdog_debug_output(uint8_t *buffer) { chsprintf(buffer, "LR Watchdog load: %u Alive: %u\r\n", (uint16_t) (dbg_load*1000), dbg_alive); }
void writeTowerEventToBuffer(int tower) { char statusMessage[20]; chsprintf(statusMessage, "[TOWER] destroyed %d", tower+1); bufferPutString(&outputBuffer, statusMessage); }
void comm_debug_output(uint8_t *buffer) { chsprintf(buffer, "b_index: %4u last_rx_index: %4u last byte: %u\r\n", b_index, last_rx_char_index, cmd_buffer[last_rx_char_index]); }
/* * @brief console ... */ void Console::write(char *fmt, ...) { chMtxLock(&this->_mutex); char buffer[this->_buffer_size]; char *str = buffer; va_list ap; char *p, *s, c, filler; int i, precision, width; bool_t is_long, left_align; long l; #if CHPRINTF_USE_FLOAT float f; char tmpbuf[2 * MAX_FILLER + 1]; #else char tmpbuf[MAX_FILLER + 1]; #endif // print timestamp uint8_t len = 0; len = chsprintf(buffer, "[%d] ", chTimeNow()); sdWrite(this->_drv, (uint8_t *)buffer, len); // va_start(ap, fmt); while (TRUE) { c = *fmt++; if (c == 0) { va_end(ap); break; } if (c != '%') { *str++ = (uint8_t)c; continue; } p = tmpbuf; s = tmpbuf; left_align = FALSE; if (*fmt == '-') { fmt++; left_align = TRUE; } filler = ' '; if (*fmt == '.') { fmt++; filler = '0'; } width = 0; while (TRUE) { c = *fmt++; if (c >= '0' && c <= '9') c -= '0'; else if (c == '*') c = va_arg(ap, int); else break; width = width * 10 + c; } precision = 0; if (c == '.') { while (TRUE) { c = *fmt++; if (c >= '0' && c <= '9') c -= '0'; else if (c == '*') c = va_arg(ap, int); else break; precision *= 10; precision += c; } }