Could you specifically point how to use the uart driver interface? I’ll look at how to base64 encode as well..
Sent from my iPhone > On 21-Apr-2018, at 8:17 PM, marko kiiskila <[email protected]> wrote: > > Console is for printable characters only, not meant for binary data. > You should go straight to uart driver interface, or base64 encode your CBOR. > >> On Apr 21, 2018, at 4:30 PM, Aditya Xavier <[email protected]> wrote: >> >> Hi Mynewt Team, >> >> It seems UART is not capable of handling non-asci characters and instead >> enters new line on occurrence of one. >> >> Thanks, >> Aditya Xavier. >> >> >>> On 21-Apr-2018, at 5:28 PM, Aditya Xavier <[email protected]> wrote: >>> >>> Hi Mynewt Team, >>> >>> Am facing issues with console_read API. >>> >>> I have a MCU sending CBOR data to nRF over UART. >>> >>> Console_read works perfect when receiving data from USB->Serial adapter >>> (Computer) & RTT. >>> >>> Console_read give multiple hits ( i.e. multiple times it would reach either >>> /*Got Full line - break …*/ or /*Do some work…*/ >>> >>> How do I fix such a situation. >>> >>> Thanks, >>> Aditya Xavier. >>> >>> >>> #define MAX_INPUT 128 >>> >>> static void >>> read_function(void *arg) >>> { >>> char buf[MAX_INPUT]; >>> int rc; >>> int full_line; >>> int off; >>> >>> off = 0; >>> while (1) { >>> rc = console_read(buf + off, MAX_INPUT - off, &full_line); >>> if (rc <= 0 && !full_line) { >>> continue; >>> } >>> off += rc; >>> if (!full_line) { >>> if (off == MAX_INPUT) { >>> /* >>> * Full line, no newline yet. Reset the input buffer. >>> */ >>> off = 0; >>> } >>> continue; >>> } >>> /* Got full line - break out of the loop and process the input data */ >>> break; >>> } >>> >>> /* Process the input line here */ >>> .... >>> >>> return; >>> } >>> static void myapp_process_input(struct os_event *ev); >>> >>> static struct os_eventq avail_queue; >>> >>> static struct console_input myapp_console_buf; >>> >>> static struct os_event myapp_console_event = { >>> .ev_cb = myapp_process_input, >>> .ev_arg = &myapp_console_buf >>> }; >>> >>> /* Event callback to process a line of input from console. */ >>> static void >>> myapp_process_input(struct os_event *ev) >>> { >>> char *line; >>> struct console_input *input; >>> >>> input = ev->ev_arg; >>> assert (input != NULL); >>> >>> line = input->line; >>> /* Do some work with line */ >>> .... >>> /* Done processing line. Add the event back to the avail_queue */ >>> os_eventq_put(&avail_queue, ev); >>> return; >>> } >>> >>> static void >>> myapp_init(void) >>> { >>> os_eventq_init(&avail_queue); >>> os_eventq_put(&avail_queue, &myapp_console_event); >>> >>> console_set_queues(&avail_queue, os_eventq_dflt_get()); >>> } >>> >> >
