Just a test

Dependencies:   BSP_DISCO_F769NI LCD_DISCO_F769NI lcd_log esp8266-driver

Fork of mbed-os-example-blinky-5 by Joscha Ihl

Committer:
joschaihl
Date:
Mon May 29 03:13:33 2017 +0000
Revision:
4:7876f757c6e8
Parent:
3:7c7587c666e1
Child:
6:37ebd143b246
latest but not greatest

Who changed what in which revision?

UserRevisionLine numberNew contents of line
joschaihl 3:7c7587c666e1 1 #if !FEATURE_LWIP
joschaihl 3:7c7587c666e1 2 #error [NOT_SUPPORTED] LWIP not supported for this target
joschaihl 3:7c7587c666e1 3 #endif
joschaihl 3:7c7587c666e1 4
joschaihl 0:2e946c38e476 5 #include "mbed.h"
joschaihl 1:361238d5a1bc 6 #include "stm32f769i_discovery.h"
joschaihl 1:361238d5a1bc 7 #include "stm32f769i_discovery_ts.h"
joschaihl 1:361238d5a1bc 8 #include "stm32f769i_discovery_lcd.h"
joschaihl 3:7c7587c666e1 9 #include "EthernetInterface.h"
joschaihl 3:7c7587c666e1 10 #include "TCPServer.h"
joschaihl 3:7c7587c666e1 11 #include "TCPSocket.h"
joschaihl 3:7c7587c666e1 12 #include "LCD_DISCO_F769NI.h"
joschaihl 3:7c7587c666e1 13 #include "lcd_log.h"
joschaihl 4:7876f757c6e8 14
joschaihl 4:7876f757c6e8 15
joschaihl 3:7c7587c666e1 16 #include <iostream>
joschaihl 4:7876f757c6e8 17 #include <cmath>
joschaihl 2:6a613cb4b302 18 using namespace std;
joschaihl 4:7876f757c6e8 19
joschaihl 3:7c7587c666e1 20 #define HTTP_STATUS_LINE "HTTP/1.0 200 OK"
joschaihl 3:7c7587c666e1 21 #define HTTP_HEADER_FIELDS "Content-Type: text/html; charset=utf-8"
joschaihl 3:7c7587c666e1 22 #define HTTP_MESSAGE_BODY "" \
joschaihl 3:7c7587c666e1 23 "<html>" "\r\n" \
joschaihl 3:7c7587c666e1 24 " <body style=\"display:flex;text-align:center\">" "\r\n" \
joschaihl 3:7c7587c666e1 25 " <div style=\"margin:auto\">" "\r\n" \
joschaihl 3:7c7587c666e1 26 " <h1>Hello World</h1>" "\r\n" \
joschaihl 3:7c7587c666e1 27 " <p>It works !</p>" "\r\n" \
joschaihl 3:7c7587c666e1 28 " </div>" "\r\n" \
joschaihl 3:7c7587c666e1 29 " </body>" "\r\n" \
joschaihl 3:7c7587c666e1 30 "</html>"
joschaihl 0:2e946c38e476 31
joschaihl 3:7c7587c666e1 32 #define HTTP_RESPONSE HTTP_STATUS_LINE "\r\n" \
joschaihl 3:7c7587c666e1 33 HTTP_HEADER_FIELDS "\r\n" \
joschaihl 3:7c7587c666e1 34 "\r\n" \
joschaihl 3:7c7587c666e1 35 HTTP_MESSAGE_BODY "\r\n"
joschaihl 3:7c7587c666e1 36
joschaihl 3:7c7587c666e1 37 TS_StateTypeDef TS_State = {0};
joschaihl 0:2e946c38e476 38 Serial pc(USBTX, USBRX);
joschaihl 3:7c7587c666e1 39 #define WIFI_RX PC_12
joschaihl 3:7c7587c666e1 40 #define WIFI_TX PD_2
joschaihl 3:7c7587c666e1 41
joschaihl 3:7c7587c666e1 42 //Serial wifi(WIFI_TX, WIFI_RX);
joschaihl 0:2e946c38e476 43
joschaihl 0:2e946c38e476 44 DigitalOut led1(LED1);
joschaihl 3:7c7587c666e1 45 LCD_DISCO_F769NI lcd;
joschaihl 3:7c7587c666e1 46 DigitalOut led_green(LED2);
joschaihl 0:2e946c38e476 47
joschaihl 0:2e946c38e476 48 void print_thread()
joschaihl 0:2e946c38e476 49 {
joschaihl 0:2e946c38e476 50 while (true) {
joschaihl 3:7c7587c666e1 51 Thread::wait(1000);
joschaihl 3:7c7587c666e1 52 printf("Hallo Welt!!!\n");
joschaihl 0:2e946c38e476 53 }
joschaihl 0:2e946c38e476 54 }
joschaihl 0:2e946c38e476 55
joschaihl 0:2e946c38e476 56 void led_thread() {
joschaihl 0:2e946c38e476 57 while(true) {
joschaihl 0:2e946c38e476 58 Thread::wait(200);
joschaihl 0:2e946c38e476 59 led1 = !led1;
joschaihl 0:2e946c38e476 60 }
joschaihl 0:2e946c38e476 61 }
joschaihl 0:2e946c38e476 62
joschaihl 3:7c7587c666e1 63 extern void LCD_LOG_SetHeader(uint8_t *Title);
joschaihl 3:7c7587c666e1 64
joschaihl 3:7c7587c666e1 65 void clock_thread() {
joschaihl 3:7c7587c666e1 66 char timestr[64] = "";
joschaihl 3:7c7587c666e1 67 while(1) {
joschaihl 3:7c7587c666e1 68 time_t seconds = time(NULL);
joschaihl 3:7c7587c666e1 69 sprintf(timestr, "Time = %s\0", ctime(&seconds));
joschaihl 3:7c7587c666e1 70 LCD_LOG_SetHeader((uint8_t *) timestr);
joschaihl 3:7c7587c666e1 71 Thread::wait(1000);
joschaihl 3:7c7587c666e1 72 }
joschaihl 3:7c7587c666e1 73
joschaihl 3:7c7587c666e1 74 }
joschaihl 3:7c7587c666e1 75
joschaihl 3:7c7587c666e1 76 void gui_thread2() {
joschaihl 3:7c7587c666e1 77
joschaihl 3:7c7587c666e1 78
joschaihl 3:7c7587c666e1 79 uint32_t i = 0;
joschaihl 3:7c7587c666e1 80
joschaihl 3:7c7587c666e1 81 BSP_LCD_Init();
joschaihl 3:7c7587c666e1 82 BSP_LCD_LayerDefaultInit(0, LCD_FB_START_ADDRESS);
joschaihl 4:7876f757c6e8 83 LCD_LOG_SetHeader((uint8_t *) "Serielle Schnittstelle");
joschaihl 3:7c7587c666e1 84 //LCD_LOG_Init();
joschaihl 3:7c7587c666e1 85
joschaihl 3:7c7587c666e1 86 while(1) {
joschaihl 3:7c7587c666e1 87 led1 = 0;
joschaihl 3:7c7587c666e1 88 led_green = 1;
joschaihl 3:7c7587c666e1 89 printf("Test %d\n",i++ );
joschaihl 3:7c7587c666e1 90
joschaihl 3:7c7587c666e1 91
joschaihl 3:7c7587c666e1 92 led1 = 1;
joschaihl 3:7c7587c666e1 93 led_green = 0;
joschaihl 3:7c7587c666e1 94 }
joschaihl 3:7c7587c666e1 95 }
joschaihl 3:7c7587c666e1 96
joschaihl 4:7876f757c6e8 97 void gui_scope() {
joschaihl 4:7876f757c6e8 98 lcd.DisplayOn();
joschaihl 4:7876f757c6e8 99 /* BSP_LCD_Init();
joschaihl 4:7876f757c6e8 100 BSP_LCD_LayerDefaultInit(0, LCD_FB_START_ADDRESS);
joschaihl 4:7876f757c6e8 101 LCD_LOG_SetHeader((uint8_t *) "Oszilloskop");*/
joschaihl 4:7876f757c6e8 102
joschaihl 4:7876f757c6e8 103 double M_PI = 3.14159265358979323846;
joschaihl 4:7876f757c6e8 104 double a = 0.0;
joschaihl 4:7876f757c6e8 105 double inc = M_PI/25.0;
joschaihl 4:7876f757c6e8 106 double abstand = lcd.GetYSize() / 2;
joschaihl 4:7876f757c6e8 107 double prev_x = 0, prev_y = abstand, x, y;
joschaihl 4:7876f757c6e8 108
joschaihl 4:7876f757c6e8 109 lcd.SetBackColor((uint32_t) 0x00000000);
joschaihl 4:7876f757c6e8 110 lcd.SetTextColor((uint32_t) 0xffffffff);
joschaihl 4:7876f757c6e8 111 //lcd.DrawLine(0, 0, 100, 100);
joschaihl 4:7876f757c6e8 112 //for(int i=0; i<1000; i=i+4)
joschaihl 4:7876f757c6e8 113 int i;
joschaihl 4:7876f757c6e8 114 while(1){
joschaihl 4:7876f757c6e8 115 x = i;
joschaihl 4:7876f757c6e8 116 y = abstand + sin(a) * 200.0;
joschaihl 4:7876f757c6e8 117
joschaihl 4:7876f757c6e8 118 //lcd.Clear((uint32_t) 0xffffffff);
joschaihl 4:7876f757c6e8 119 //lcd.SetColorKeying(1, (uint32_t) 0xff000000);
joschaihl 4:7876f757c6e8 120 lcd.DrawLine(prev_x, prev_y, x, y);
joschaihl 4:7876f757c6e8 121 prev_x = x;
joschaihl 4:7876f757c6e8 122 prev_y = y;
joschaihl 4:7876f757c6e8 123 a = a + inc;
joschaihl 4:7876f757c6e8 124 i+=8;
joschaihl 4:7876f757c6e8 125 if(i>lcd.GetXSize()) {
joschaihl 4:7876f757c6e8 126 i = 0;
joschaihl 4:7876f757c6e8 127 lcd.Clear((uint32_t) 0x00000000);
joschaihl 4:7876f757c6e8 128 wait_ms(10);
joschaihl 4:7876f757c6e8 129 //lcd.SetBackColor((uint32_t) 0x00000000);
joschaihl 4:7876f757c6e8 130 //lcd.SetTextColor((uint32_t) 0xffffffff);
joschaihl 4:7876f757c6e8 131 }
joschaihl 4:7876f757c6e8 132 }
joschaihl 4:7876f757c6e8 133 //lcd.LayerDefaultInit(0, LCD_FB_START_ADDRESS);
joschaihl 4:7876f757c6e8 134 //LCD_SetTextColor((uint32_t) 0xffffffff);
joschaihl 4:7876f757c6e8 135 //LCD_DrawLine(120, 70, 2, 30);
joschaihl 4:7876f757c6e8 136 // LCD_DrawLine(122, 68, 2, 50);
joschaihl 4:7876f757c6e8 137 //LCD_DrawLine(122, 72, 2, 60);
joschaihl 4:7876f757c6e8 138
joschaihl 4:7876f757c6e8 139 // lcd.DrawLine(100, 100, 100, 100);
joschaihl 4:7876f757c6e8 140 while(1) {
joschaihl 4:7876f757c6e8 141 }
joschaihl 4:7876f757c6e8 142 }
joschaihl 4:7876f757c6e8 143
joschaihl 3:7c7587c666e1 144 void touch_thread() {
joschaihl 2:6a613cb4b302 145 uint16_t x1, y1;
joschaihl 3:7c7587c666e1 146 TS_StateTypeDef state;
joschaihl 1:361238d5a1bc 147 /* Touchscreen initialization */
joschaihl 1:361238d5a1bc 148 if (BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize()) == TS_ERROR) {
joschaihl 1:361238d5a1bc 149 printf("BSP_TS_Init error\n");
joschaihl 1:361238d5a1bc 150 }
joschaihl 1:361238d5a1bc 151 while (1) {
joschaihl 3:7c7587c666e1 152 // BSP_TS_GetState(&TS_State);
joschaihl 3:7c7587c666e1 153 // if(TS_State.touchDetected) {
joschaihl 1:361238d5a1bc 154 /* One or dual touch have been detected */
joschaihl 1:361238d5a1bc 155
joschaihl 1:361238d5a1bc 156 /* Get X and Y position of the first touch post calibrated */
joschaihl 3:7c7587c666e1 157 // x1 = TS_State.touchX[0];
joschaihl 3:7c7587c666e1 158 // y1 = TS_State.touchY[0];
joschaihl 3:7c7587c666e1 159 // printf("Touch Detected x=%d y=%d\n", x1, y1);
joschaihl 3:7c7587c666e1 160
joschaihl 2:6a613cb4b302 161 //BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
joschaihl 2:6a613cb4b302 162 //BSP_LCD_FillCircle(x1, y1, 20);
joschaihl 1:361238d5a1bc 163
joschaihl 3:7c7587c666e1 164 wait_ms(10);
joschaihl 3:7c7587c666e1 165 //}
joschaihl 3:7c7587c666e1 166 }
joschaihl 3:7c7587c666e1 167
joschaihl 3:7c7587c666e1 168 }
joschaihl 3:7c7587c666e1 169
joschaihl 3:7c7587c666e1 170 void srvLoop()
joschaihl 3:7c7587c666e1 171 {
joschaihl 3:7c7587c666e1 172 printf("Basic HTTP server example\n");
joschaihl 3:7c7587c666e1 173
joschaihl 3:7c7587c666e1 174 EthernetInterface eth;
joschaihl 3:7c7587c666e1 175 eth.connect();
joschaihl 3:7c7587c666e1 176
joschaihl 3:7c7587c666e1 177 printf("The target IP address is '%s'\n", eth.get_ip_address());
joschaihl 3:7c7587c666e1 178
joschaihl 3:7c7587c666e1 179 TCPServer srv;
joschaihl 3:7c7587c666e1 180 TCPSocket clt_sock;
joschaihl 3:7c7587c666e1 181 SocketAddress clt_addr;
joschaihl 3:7c7587c666e1 182
joschaihl 3:7c7587c666e1 183 /* Open the server on ethernet stack */
joschaihl 3:7c7587c666e1 184 srv.open(&eth);
joschaihl 3:7c7587c666e1 185
joschaihl 3:7c7587c666e1 186 /* Bind the HTTP port (TCP 80) to the server */
joschaihl 3:7c7587c666e1 187 srv.bind(eth.get_ip_address(), 80);
joschaihl 3:7c7587c666e1 188
joschaihl 3:7c7587c666e1 189 /* Can handle 5 simultaneous connections */
joschaihl 3:7c7587c666e1 190 srv.listen(5);
joschaihl 3:7c7587c666e1 191
joschaihl 3:7c7587c666e1 192 while (true) {
joschaihl 3:7c7587c666e1 193 srv.accept(&clt_sock, &clt_addr);
joschaihl 3:7c7587c666e1 194 printf("accept %s:%d\n", clt_addr.get_ip_address(), clt_addr.get_port());
joschaihl 3:7c7587c666e1 195 clt_sock.send(HTTP_RESPONSE, strlen(HTTP_RESPONSE));
joschaihl 1:361238d5a1bc 196 }
joschaihl 1:361238d5a1bc 197 }
joschaihl 1:361238d5a1bc 198
joschaihl 3:7c7587c666e1 199 void esp_thread() {
joschaihl 3:7c7587c666e1 200
joschaihl 3:7c7587c666e1 201 while(1) {
joschaihl 3:7c7587c666e1 202 // pc.putc(wifi.getc());
joschaihl 3:7c7587c666e1 203 }
joschaihl 3:7c7587c666e1 204 }
joschaihl 2:6a613cb4b302 205
joschaihl 3:7c7587c666e1 206 int main(void) {
joschaihl 3:7c7587c666e1 207 pc.baud(115200*2);
joschaihl 3:7c7587c666e1 208 //wifi.baud(115200);
joschaihl 3:7c7587c666e1 209 cout << "Hallo Joscha!!!" << endl;
joschaihl 3:7c7587c666e1 210 Thread printThread(osPriorityNormal), ledThread(osPriorityNormal),
joschaihl 3:7c7587c666e1 211 guiThread(osPriorityNormal), touchThread(osPriorityNormal), clockThread(osPriorityNormal), espThread(osPriorityNormal);
joschaihl 3:7c7587c666e1 212
joschaihl 4:7876f757c6e8 213 // printThread.start(print_thread);
joschaihl 4:7876f757c6e8 214 // ledThread.start(led_thread);
joschaihl 4:7876f757c6e8 215 guiThread.start(gui_scope);
joschaihl 4:7876f757c6e8 216 // touchThread.start(touch_thread);
joschaihl 4:7876f757c6e8 217 // clockThread.start(clock_thread);
joschaihl 3:7c7587c666e1 218 // espThread.start(esp_thread);
joschaihl 3:7c7587c666e1 219 // Thread tsrv;
joschaihl 3:7c7587c666e1 220 // tsrv.start(srvLoop);
joschaihl 2:6a613cb4b302 221
joschaihl 2:6a613cb4b302 222
joschaihl 2:6a613cb4b302 223 while(1) {
joschaihl 3:7c7587c666e1 224
joschaihl 2:6a613cb4b302 225 }
joschaihl 2:6a613cb4b302 226 }