microbit_scpi_pass_fail
Fork of microbit-hello-world by
Diff: main.cpp
- Revision:
- 1:aa0af9cf4f28
- Parent:
- 0:0041f35b0c4c
--- a/main.cpp Wed Jul 13 16:03:21 2016 +0100 +++ b/main.cpp Tue Nov 06 20:58:04 2018 +0000 @@ -24,20 +24,139 @@ */ #include "MicroBit.h" +#include "MicroBitSerial.h" + MicroBit uBit; +MicroBitSerial serial(USBTX, USBRX); -int main() -{ + + + +/*- + * BSD 2-Clause License + * + * Copyright (c) 2012-2018, Jan Breuer + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * @file main.c + * @date Thu Nov 15 10:58:45 UTC 2012 + * + * @brief SCPI parser test + * + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include "scpi/scpi.h" +#include "scpi-def.h" + + + +size_t SCPI_Write(scpi_t * context, const char * data, size_t len) { + (void) context; + return serial.send((uint8_t *)data, len); +} + +scpi_result_t SCPI_Flush(scpi_t * context) { + (void) context; + + return SCPI_RES_OK; +} + +int SCPI_Error(scpi_t * context, int_fast16_t err) { + (void) context; + +// fprintf(stderr, "**ERROR: %d, \"%s\"\r\n", (int16_t) err, SCPI_ErrorTranslate(err)); + return 0; +} + +scpi_result_t SCPI_Control(scpi_t * context, scpi_ctrl_name_t ctrl, scpi_reg_val_t val) { + (void) context; + + if (SCPI_CTRL_SRQ == ctrl) { +// fprintf(stderr, "**SRQ: 0x%X (%d)\r\n", val, val); + } else { +// fprintf(stderr, "**CTRL %02x: 0x%X (%d)\r\n", ctrl, val, val); + } + return SCPI_RES_OK; +} + +scpi_result_t SCPI_Reset(scpi_t * context) { + (void) context; + +// fprintf(stderr, "**Reset\r\n"); + return SCPI_RES_OK; +} + + + +/* + * + */ +int main(int argc, char** argv) { + (void) argc; + (void) argv; + int result; + + int character; + + SCPI_Init(&scpi_context, + scpi_commands, + &scpi_interface, + scpi_units_def, + SCPI_IDN1, SCPI_IDN2, SCPI_IDN3, SCPI_IDN4, + scpi_input_buffer, SCPI_INPUT_BUFFER_LENGTH, + scpi_error_queue_data, SCPI_ERROR_QUEUE_SIZE); + + + // Initialise the micro:bit runtime. uBit.init(); + uBit.io.P0.setDigitalValue(0); + uBit.io.P1.setDigitalValue(0); + - // Insert your code here! - uBit.display.scroll("HELLO WORLD! :)"); + - // If main exits, there may still be other fibers running or registered event handlers etc. - // Simply release this fiber, which will mean we enter the scheduler. Worse case, we then - // sit in the idle task forever, in a power efficient sleep. + + while(1) { // the device goes into low power when no characters arrive + character = serial.read(SYNC_SLEEP); + SCPI_Input(&scpi_context, (const char *) (&character), 1); + } + + + release_fiber(); + + + return (EXIT_SUCCESS); } + +