text export

Dependencies:   X_NUCLEO_IKS01A3

Committer:
gpmbed
Date:
Wed May 19 15:54:08 2021 +0000
Revision:
9:8c7774aca512
Parent:
6:94151942f287
test export

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gpmbed 9:8c7774aca512 1 /* mbed Microcontroller Library
gpmbed 9:8c7774aca512 2 * Copyright (c) 2019 ARM Limited
gpmbed 9:8c7774aca512 3 * SPDX-License-Identifier: Apache-2.0
gpmbed 9:8c7774aca512 4 */
gpmbed 9:8c7774aca512 5
gpmbed 9:8c7774aca512 6 #include "mbed.h"
gpmbed 9:8c7774aca512 7 #include "BufferedSerial.h"
gpmbed 9:8c7774aca512 8 #include "platform/mbed_thread.h"
gpmbed 9:8c7774aca512 9
gpmbed 9:8c7774aca512 10 BufferedSerial pc(USBTX, USBRX,115200); //Serial port for debug
gpmbed 9:8c7774aca512 11 BufferedSerial COM2(PC_12, PD_2,115200); //Serial port COM2
gpmbed 9:8c7774aca512 12
cparata 0:535249dc4bf5 13
gpmbed 9:8c7774aca512 14 DigitalInOut MYPIO_0(PA_9); //D8
gpmbed 9:8c7774aca512 15 DigitalInOut MYPIO_1(PC_7); //D9
gpmbed 9:8c7774aca512 16 DigitalInOut MYPIO_2(PB_6); //D10
gpmbed 9:8c7774aca512 17 DigitalInOut MYPIO_3(PA_7); //D11
gpmbed 9:8c7774aca512 18 DigitalInOut MYPIO_4(PA_6); //D12
cparata 0:535249dc4bf5 19
gpmbed 9:8c7774aca512 20 DigitalOut LED_FAB(PB_5);
gpmbed 9:8c7774aca512 21 DigitalOut GREEN_LED(PA_5);
gpmbed 9:8c7774aca512 22 DigitalIn WATER_DETECT(PB_1); //water detect 0=ok 1=Water
cparata 0:535249dc4bf5 23
gpmbed 9:8c7774aca512 24 AnalogIn Analog_0(PA_0);
gpmbed 9:8c7774aca512 25 AnalogIn Analog_1(PA_1);
gpmbed 9:8c7774aca512 26 char strAdc[10];
gpmbed 9:8c7774aca512 27
gpmbed 9:8c7774aca512 28 // Blinking rate in milliseconds
gpmbed 9:8c7774aca512 29 #define BLINKING_RATE_MS 500
gpmbed 9:8c7774aca512 30
gpmbed 9:8c7774aca512 31 char cmdParams[10][10];
gpmbed 9:8c7774aca512 32 unsigned char cmdParamsCount = 0;
gpmbed 9:8c7774aca512 33
cparata 0:535249dc4bf5 34
cparata 0:535249dc4bf5 35 /* Helper function for printing floats & doubles */
cparata 5:7c883cce2bc4 36 static char *print_double(char *str, double v, int decimalDigits = 2)
cparata 0:535249dc4bf5 37 {
cparata 5:7c883cce2bc4 38 int i = 1;
cparata 5:7c883cce2bc4 39 int intPart, fractPart;
cparata 5:7c883cce2bc4 40 int len;
cparata 5:7c883cce2bc4 41 char *ptr;
gpmbed 9:8c7774aca512 42 uint8_t fracSign = 0; //0 = negativo 1=positivo
gpmbed 9:8c7774aca512 43
gpmbed 9:8c7774aca512 44 if(v<0){ fracSign = 0; }
gpmbed 9:8c7774aca512 45 else{ fracSign=1; }
gpmbed 9:8c7774aca512 46
cparata 0:535249dc4bf5 47
cparata 5:7c883cce2bc4 48 /* prepare decimal digits multiplicator */
cparata 5:7c883cce2bc4 49 for (; decimalDigits != 0; i *= 10, decimalDigits--);
cparata 0:535249dc4bf5 50
cparata 5:7c883cce2bc4 51 /* calculate integer & fractinal parts */
gpmbed 9:8c7774aca512 52 intPart = abs((int)v);
cparata 5:7c883cce2bc4 53 fractPart = (int)((v - (double)(int)v) * i);
gpmbed 9:8c7774aca512 54 fractPart = abs(fractPart);
cparata 0:535249dc4bf5 55
cparata 5:7c883cce2bc4 56 /* fill in integer part */
gpmbed 9:8c7774aca512 57 if(fracSign == 0){ sprintf(str, "-%i.", intPart); }
gpmbed 9:8c7774aca512 58 else{ sprintf(str, "%i.", intPart); }
gpmbed 9:8c7774aca512 59
cparata 0:535249dc4bf5 60
cparata 5:7c883cce2bc4 61 /* prepare fill in of fractional part */
cparata 5:7c883cce2bc4 62 len = strlen(str);
cparata 5:7c883cce2bc4 63 ptr = &str[len];
cparata 0:535249dc4bf5 64
cparata 5:7c883cce2bc4 65 /* fill in leading fractional zeros */
cparata 5:7c883cce2bc4 66 for (i /= 10; i > 1; i /= 10, ptr++) {
cparata 5:7c883cce2bc4 67 if (fractPart >= i) {
cparata 5:7c883cce2bc4 68 break;
cparata 5:7c883cce2bc4 69 }
cparata 5:7c883cce2bc4 70 *ptr = '0';
cparata 0:535249dc4bf5 71 }
cparata 0:535249dc4bf5 72
cparata 5:7c883cce2bc4 73 /* fill in (rest of) fractional part */
cparata 5:7c883cce2bc4 74 sprintf(ptr, "%i", fractPart);
cparata 0:535249dc4bf5 75
cparata 5:7c883cce2bc4 76 return str;
cparata 0:535249dc4bf5 77 }
cparata 0:535249dc4bf5 78
gpmbed 9:8c7774aca512 79
gpmbed 9:8c7774aca512 80 unsigned char splitString(char *textToSplit,const char *delimiter)
gpmbed 9:8c7774aca512 81 {
gpmbed 9:8c7774aca512 82 cmdParamsCount = 0;
gpmbed 9:8c7774aca512 83 char * token = strtok(textToSplit,delimiter);
gpmbed 9:8c7774aca512 84
gpmbed 9:8c7774aca512 85
gpmbed 9:8c7774aca512 86 while(token != NULL)
gpmbed 9:8c7774aca512 87 {
gpmbed 9:8c7774aca512 88 sprintf(cmdParams[cmdParamsCount],"%s",token);
gpmbed 9:8c7774aca512 89 token = strtok(NULL, delimiter);
gpmbed 9:8c7774aca512 90 cmdParamsCount++;
gpmbed 9:8c7774aca512 91 }
gpmbed 9:8c7774aca512 92
gpmbed 9:8c7774aca512 93 return cmdParamsCount;
gpmbed 9:8c7774aca512 94 }
gpmbed 9:8c7774aca512 95
gpmbed 9:8c7774aca512 96 bool startsWith(const char *pre, const char *str)
gpmbed 9:8c7774aca512 97 {
gpmbed 9:8c7774aca512 98 size_t lenpre = strlen(pre),
gpmbed 9:8c7774aca512 99 lenstr = strlen(str);
gpmbed 9:8c7774aca512 100 return lenstr < lenpre ? false : memcmp(pre, str, lenpre) == 0;
gpmbed 9:8c7774aca512 101 }
gpmbed 9:8c7774aca512 102
gpmbed 9:8c7774aca512 103
gpmbed 9:8c7774aca512 104 char outBuffer[255];
gpmbed 9:8c7774aca512 105 char inBuffer[255] = "";
gpmbed 9:8c7774aca512 106 char inChar[1];
gpmbed 9:8c7774aca512 107 char gpio_map[6] = "00000";
gpmbed 9:8c7774aca512 108 void execute_com1_cmd()
gpmbed 9:8c7774aca512 109 {
gpmbed 9:8c7774aca512 110 inBuffer[strlen(inBuffer)-1] = 0;
gpmbed 9:8c7774aca512 111 if(startsWith("SET GPIO1_IN",inBuffer)){ MYPIO_0.input(); gpio_map[0] = '1'; }
gpmbed 9:8c7774aca512 112 else if(startsWith("SET GPIO2_IN",inBuffer)){ MYPIO_1.input(); gpio_map[1] = '1';}
gpmbed 9:8c7774aca512 113 else if(startsWith("SET GPIO3_IN",inBuffer)){ MYPIO_2.input(); gpio_map[2] = '1';}
gpmbed 9:8c7774aca512 114 else if(startsWith("SET GPIO4_IN",inBuffer)){ MYPIO_3.input(); gpio_map[3] = '1';}
gpmbed 9:8c7774aca512 115 else if(startsWith("SET GPIO5_IN",inBuffer)){ MYPIO_4.input(); gpio_map[4] = '1';}
gpmbed 9:8c7774aca512 116 else if(startsWith("SET GPIO1_OUT",inBuffer)){ MYPIO_0.output(); gpio_map[0] = '0';}
gpmbed 9:8c7774aca512 117 else if(startsWith("SET GPIO2_OUT",inBuffer)){ MYPIO_1.output(); gpio_map[1] = '0';}
gpmbed 9:8c7774aca512 118 else if(startsWith("SET GPIO3_OUT",inBuffer)){ MYPIO_2.output(); gpio_map[2] = '0';}
gpmbed 9:8c7774aca512 119 else if(startsWith("SET GPIO4_OUT",inBuffer)){ MYPIO_3.output(); gpio_map[3] = '0';}
gpmbed 9:8c7774aca512 120 else if(startsWith("SET GPIO5_OUT",inBuffer)){ MYPIO_4.output(); gpio_map[4] = '0';}
gpmbed 9:8c7774aca512 121 else if(startsWith("SET GPIO1 1",inBuffer)){ MYPIO_0.write(1); }
gpmbed 9:8c7774aca512 122 else if(startsWith("SET GPIO1 0",inBuffer)){ MYPIO_0.write(0); }
gpmbed 9:8c7774aca512 123 else if(startsWith("SET GPIO2 1",inBuffer)){ MYPIO_1.write(1); }
gpmbed 9:8c7774aca512 124 else if(startsWith("SET GPIO2 0",inBuffer)){ MYPIO_1.write(0); }
gpmbed 9:8c7774aca512 125 else if(startsWith("SET GPIO3 1",inBuffer)){ MYPIO_2.write(1); }
gpmbed 9:8c7774aca512 126 else if(startsWith("SET GPIO3 0",inBuffer)){ MYPIO_2.write(0); }
gpmbed 9:8c7774aca512 127 else if(startsWith("SET GPIO4 1",inBuffer)){ MYPIO_3.write(1); }
gpmbed 9:8c7774aca512 128 else if(startsWith("SET GPIO4 0",inBuffer)){ MYPIO_3.write(0); }
gpmbed 9:8c7774aca512 129 else if(startsWith("SET GPIO5 1",inBuffer)){ MYPIO_4.write(1); }
gpmbed 9:8c7774aca512 130 else if(startsWith("SET GPIO5 0",inBuffer)){ MYPIO_4.write(0); }
gpmbed 9:8c7774aca512 131 else if(startsWith("GET GPIO1",inBuffer)){ sprintf(outBuffer,"%d\r\n",MYPIO_0.read()); pc.write(outBuffer,strlen(outBuffer)); }
gpmbed 9:8c7774aca512 132 else if(startsWith("GET GPIO2",inBuffer)){ sprintf(outBuffer,"%d\r\n",MYPIO_1.read()); pc.write(outBuffer,strlen(outBuffer)); }
gpmbed 9:8c7774aca512 133 else if(startsWith("GET GPIO3",inBuffer)){ sprintf(outBuffer,"%d\r\n",MYPIO_2.read()); pc.write(outBuffer,strlen(outBuffer)); }
gpmbed 9:8c7774aca512 134 else if(startsWith("GET GPIO4",inBuffer)){ sprintf(outBuffer,"%d\r\n",MYPIO_3.read()); pc.write(outBuffer,strlen(outBuffer)); }
gpmbed 9:8c7774aca512 135 else if(startsWith("GET GPIO5",inBuffer)){ sprintf(outBuffer,"%d\r\n",MYPIO_4.read()); pc.write(outBuffer,strlen(outBuffer)); }
gpmbed 9:8c7774aca512 136 else if(startsWith("GET GPIO_MAP",inBuffer)){ sprintf(outBuffer,"%s\r\n",gpio_map); pc.write(outBuffer,strlen(outBuffer)); }
gpmbed 9:8c7774aca512 137 else if(startsWith("GET ADC0",inBuffer)){ sprintf(outBuffer,"%s\r\n",print_double(strAdc,Analog_0*3.3,4)); pc.write(outBuffer,strlen(outBuffer)); }
gpmbed 9:8c7774aca512 138 else if(startsWith("GET ADC1",inBuffer)){ sprintf(outBuffer,"%s\r\n",print_double(strAdc,Analog_1*3.3,4)); pc.write(outBuffer,strlen(outBuffer));}
gpmbed 9:8c7774aca512 139 else if(startsWith("SET LED 1",inBuffer)){ LED_FAB.write(1); }
gpmbed 9:8c7774aca512 140 else if(startsWith("SET LED 0",inBuffer)){ LED_FAB.write(0); }
gpmbed 9:8c7774aca512 141 }
gpmbed 9:8c7774aca512 142
gpmbed 9:8c7774aca512 143
gpmbed 9:8c7774aca512 144
cparata 5:7c883cce2bc4 145 int main()
cparata 5:7c883cce2bc4 146 {
gpmbed 9:8c7774aca512 147 // Initialise the digital pin LED1 as an output
gpmbed 9:8c7774aca512 148 MYPIO_0.output(); MYPIO_0 = 0;
gpmbed 9:8c7774aca512 149 MYPIO_1.output(); MYPIO_1 = 0;
gpmbed 9:8c7774aca512 150 MYPIO_2.output(); MYPIO_2 = 0;
gpmbed 9:8c7774aca512 151 MYPIO_3.output(); MYPIO_3 = 0;
gpmbed 9:8c7774aca512 152 MYPIO_4.output(); MYPIO_4 = 0;
gpmbed 9:8c7774aca512 153 LED_FAB = 1;
gpmbed 9:8c7774aca512 154 while (true) {
gpmbed 9:8c7774aca512 155 //led = !led;
gpmbed 9:8c7774aca512 156 /*
gpmbed 9:8c7774aca512 157 while(pc.readable())
gpmbed 9:8c7774aca512 158 {
gpmbed 9:8c7774aca512 159 pc.read(inChar,1);
gpmbed 9:8c7774aca512 160 if(inChar[0] == '\n')
gpmbed 9:8c7774aca512 161 {
gpmbed 9:8c7774aca512 162 execute_com1_cmd();
gpmbed 9:8c7774aca512 163 sprintf(inBuffer,"");
gpmbed 9:8c7774aca512 164 }
gpmbed 9:8c7774aca512 165 else{
gpmbed 9:8c7774aca512 166 sprintf(inBuffer,"%s%c",inBuffer,inChar[0]);
gpmbed 9:8c7774aca512 167 }
gpmbed 9:8c7774aca512 168 //pc.write(inBuffer,strlen(inBuffer));
gpmbed 9:8c7774aca512 169 }
gpmbed 9:8c7774aca512 170 */
gpmbed 9:8c7774aca512 171 thread_sleep_for(1000);
gpmbed 9:8c7774aca512 172 LED_FAB = !LED_FAB;
gpmbed 9:8c7774aca512 173 GREEN_LED =!GREEN_LED;
cparata 5:7c883cce2bc4 174 }
cparata 0:535249dc4bf5 175 }