Exemplo n.º 1
0
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");
    }
}
Exemplo n.º 3
0
/* 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;
}
Exemplo n.º 4
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
    }
}
Exemplo n.º 5
0
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);
}
Exemplo n.º 6
0
void writeTowerEventToBuffer(int tower)
{
	char statusMessage[20];
	chsprintf(statusMessage, "[TOWER] destroyed %d", tower+1);
	bufferPutString(&outputBuffer, statusMessage);
}
Exemplo n.º 7
0
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]);
}
Exemplo n.º 8
0
/*
 * @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;
            }
        }