Bus alarm system with WIZwiki-W7500 for WIZnet Academy

Dependencies:   Adafruit_GFX WIZnetInterface mbed

Fork of Bus_Alarm_System_Helloworld_WIZwiki-W7500 by Lawrence Lee

Committer:
joon874
Date:
Thu Oct 15 00:17:32 2015 +0000
Revision:
0:6b8e3f9fafbd
Bus alarm system with WIZwiki-W7500 for WIZnet Academy

Who changed what in which revision?

UserRevisionLine numberNew contents of line
joon874 0:6b8e3f9fafbd 1 #include "mbed.h"
joon874 0:6b8e3f9fafbd 2 #include "EthernetInterface.h"
joon874 0:6b8e3f9fafbd 3 #include "Adafruit_SSD1306.h"
joon874 0:6b8e3f9fafbd 4
joon874 0:6b8e3f9fafbd 5 class I2CPreInit : public I2C
joon874 0:6b8e3f9fafbd 6 {
joon874 0:6b8e3f9fafbd 7 public:
joon874 0:6b8e3f9fafbd 8 I2CPreInit(PinName sda, PinName scl) : I2C(sda, scl)
joon874 0:6b8e3f9fafbd 9 {
joon874 0:6b8e3f9fafbd 10 frequency(100000);
joon874 0:6b8e3f9fafbd 11 start();
joon874 0:6b8e3f9fafbd 12 };
joon874 0:6b8e3f9fafbd 13 };
joon874 0:6b8e3f9fafbd 14
joon874 0:6b8e3f9fafbd 15 I2CPreInit gI2C(PA_10,PA_9);
joon874 0:6b8e3f9fafbd 16 Adafruit_SSD1306_I2c gOled(gI2C,NC,0x78,64,128);
joon874 0:6b8e3f9fafbd 17
joon874 0:6b8e3f9fafbd 18 //internal led
joon874 0:6b8e3f9fafbd 19 DigitalOut red_led(LED1,1);
joon874 0:6b8e3f9fafbd 20 DigitalOut blue_led(LED3,1);
joon874 0:6b8e3f9fafbd 21
joon874 0:6b8e3f9fafbd 22 int main()
joon874 0:6b8e3f9fafbd 23 {
joon874 0:6b8e3f9fafbd 24 int phy_link;
joon874 0:6b8e3f9fafbd 25 printf("Wait a second...\r\n");
joon874 0:6b8e3f9fafbd 26 uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x09};
joon874 0:6b8e3f9fafbd 27
joon874 0:6b8e3f9fafbd 28 EthernetInterface eth;
joon874 0:6b8e3f9fafbd 29 eth.init(mac_addr); //Use DHCP
joon874 0:6b8e3f9fafbd 30
joon874 0:6b8e3f9fafbd 31 eth.connect();
joon874 0:6b8e3f9fafbd 32
joon874 0:6b8e3f9fafbd 33 //phy link
joon874 0:6b8e3f9fafbd 34 do{
joon874 0:6b8e3f9fafbd 35 phy_link = eth.ethernet_link();
joon874 0:6b8e3f9fafbd 36 printf("...");
joon874 0:6b8e3f9fafbd 37 wait(2);
joon874 0:6b8e3f9fafbd 38 }while(!phy_link);
joon874 0:6b8e3f9fafbd 39 printf("IP Address is %s\r\n\r\n", eth.getIPAddress());
joon874 0:6b8e3f9fafbd 40
joon874 0:6b8e3f9fafbd 41 char buffer[1024];
joon874 0:6b8e3f9fafbd 42 int ret;
joon874 0:6b8e3f9fafbd 43
joon874 0:6b8e3f9fafbd 44 //BUS "GET /ws/rest/busarrivalservice?serviceKey=??&routeId=??&stationId=?? \n\n"
joon874 0:6b8e3f9fafbd 45 char http_cmd[] = "GET /ws/rest/busarrivalservice?serviceKey=1234567890&routeId=234000878&stationId=206000082 \n\n"; // 8100
joon874 0:6b8e3f9fafbd 46
joon874 0:6b8e3f9fafbd 47 while(1)
joon874 0:6b8e3f9fafbd 48 {
joon874 0:6b8e3f9fafbd 49 //TCP socket connect
joon874 0:6b8e3f9fafbd 50 TCPSocketConnection sock;
joon874 0:6b8e3f9fafbd 51 sock.connect("openapi.gbis.go.kr", 80);
joon874 0:6b8e3f9fafbd 52
joon874 0:6b8e3f9fafbd 53 sock.send_all(http_cmd, sizeof(http_cmd)-1);
joon874 0:6b8e3f9fafbd 54
joon874 0:6b8e3f9fafbd 55 while (true)
joon874 0:6b8e3f9fafbd 56 {
joon874 0:6b8e3f9fafbd 57 ret = sock.receive(buffer, sizeof(buffer)-1);
joon874 0:6b8e3f9fafbd 58
joon874 0:6b8e3f9fafbd 59 if (ret <= 0)
joon874 0:6b8e3f9fafbd 60 printf("fail\r\n");
joon874 0:6b8e3f9fafbd 61 //break;
joon874 0:6b8e3f9fafbd 62 else{
joon874 0:6b8e3f9fafbd 63 buffer[ret] = '\0';
joon874 0:6b8e3f9fafbd 64 printf("Received %d chars from server: %s\r\n", ret, buffer);
joon874 0:6b8e3f9fafbd 65 break;
joon874 0:6b8e3f9fafbd 66 }
joon874 0:6b8e3f9fafbd 67 }
joon874 0:6b8e3f9fafbd 68 printf("\r\n\r\n");
joon874 0:6b8e3f9fafbd 69
joon874 0:6b8e3f9fafbd 70
joon874 0:6b8e3f9fafbd 71 // parsing data
joon874 0:6b8e3f9fafbd 72 char *date;
joon874 0:6b8e3f9fafbd 73 char *bus_1st;
joon874 0:6b8e3f9fafbd 74 char *bus_2nd;
joon874 0:6b8e3f9fafbd 75
joon874 0:6b8e3f9fafbd 76 char current_date[11] = {0};
joon874 0:6b8e3f9fafbd 77 char arrive_bus1[2] = {0};
joon874 0:6b8e3f9fafbd 78 char arrive_bus2[2] = {0};
joon874 0:6b8e3f9fafbd 79
joon874 0:6b8e3f9fafbd 80 date = strstr(buffer, "<queryTime>");
joon874 0:6b8e3f9fafbd 81 for(int i=0;i<10;i++){
joon874 0:6b8e3f9fafbd 82 current_date[i] = date[i+11];
joon874 0:6b8e3f9fafbd 83 }
joon874 0:6b8e3f9fafbd 84
joon874 0:6b8e3f9fafbd 85 bus_1st = strstr(buffer, "<predictTime1>");
joon874 0:6b8e3f9fafbd 86 for(int i=0; i<2;i++){
joon874 0:6b8e3f9fafbd 87 arrive_bus1[i] = bus_1st[i+14];
joon874 0:6b8e3f9fafbd 88 if(arrive_bus1[i] == '<'){
joon874 0:6b8e3f9fafbd 89 arrive_bus1[i] = 0;
joon874 0:6b8e3f9fafbd 90 break;
joon874 0:6b8e3f9fafbd 91 }
joon874 0:6b8e3f9fafbd 92 }
joon874 0:6b8e3f9fafbd 93
joon874 0:6b8e3f9fafbd 94 bus_2nd = strstr(buffer, "<predictTime2>");
joon874 0:6b8e3f9fafbd 95 for(int i=0; i<2;i++){
joon874 0:6b8e3f9fafbd 96 arrive_bus2[i] = bus_2nd[i+14];
joon874 0:6b8e3f9fafbd 97 if(arrive_bus2[i] == '<'){
joon874 0:6b8e3f9fafbd 98 arrive_bus2[i] = 0;
joon874 0:6b8e3f9fafbd 99 break;
joon874 0:6b8e3f9fafbd 100 }
joon874 0:6b8e3f9fafbd 101 }
joon874 0:6b8e3f9fafbd 102
joon874 0:6b8e3f9fafbd 103 printf("current date : %s\r\n", current_date);
joon874 0:6b8e3f9fafbd 104 printf("arrival bus1 : %s\r\n", arrive_bus1);
joon874 0:6b8e3f9fafbd 105 printf("arrival bus2 : %s\r\n", arrive_bus2);
joon874 0:6b8e3f9fafbd 106
joon874 0:6b8e3f9fafbd 107
joon874 0:6b8e3f9fafbd 108 // OLED Display
joon874 0:6b8e3f9fafbd 109 gOled.begin();
joon874 0:6b8e3f9fafbd 110 gOled.clearDisplay();
joon874 0:6b8e3f9fafbd 111
joon874 0:6b8e3f9fafbd 112 gOled.printf("%s\n\n", current_date);
joon874 0:6b8e3f9fafbd 113 gOled.printf("No.8100\n\n");
joon874 0:6b8e3f9fafbd 114 gOled.printf("You have %s mins\n\n", arrive_bus1);
joon874 0:6b8e3f9fafbd 115 gOled.printf("Next Bus %s mins\n", arrive_bus2);
joon874 0:6b8e3f9fafbd 116 gOled.display();
joon874 0:6b8e3f9fafbd 117 gOled.setTextCursor(0,0);
joon874 0:6b8e3f9fafbd 118
joon874 0:6b8e3f9fafbd 119 wait(12);
joon874 0:6b8e3f9fafbd 120 };
joon874 0:6b8e3f9fafbd 121
joon874 0:6b8e3f9fafbd 122 }