yuki makura / Mbed 2 deprecated 2018_wamv_sw_panel

Dependencies:   mbed mbed-rtos EthernetInterface

Committer:
yukisega
Date:
Mon Dec 10 20:13:16 2018 +0000
Revision:
1:8485adfbbd18
Parent:
0:e894a0665114
Child:
3:791851ed2989
add TCPSocket connection

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JadeEtoile 0:e894a0665114 1 /* mbed Microcontroller Library
JadeEtoile 0:e894a0665114 2 * Copyright (c) 2018 ARM Limited
JadeEtoile 0:e894a0665114 3 * SPDX-License-Identifier: Apache-2.0
JadeEtoile 0:e894a0665114 4 */
JadeEtoile 0:e894a0665114 5
JadeEtoile 0:e894a0665114 6 #include "mbed.h"
yukisega 1:8485adfbbd18 7 #include "EthernetInterface.h"
yukisega 1:8485adfbbd18 8 #include "rtos.h"
yukisega 1:8485adfbbd18 9
JadeEtoile 0:e894a0665114 10
JadeEtoile 0:e894a0665114 11 #define ON (1)
JadeEtoile 0:e894a0665114 12 #define OFF (0)
JadeEtoile 0:e894a0665114 13
JadeEtoile 0:e894a0665114 14 #define COLOR_RED (0b100)
JadeEtoile 0:e894a0665114 15 #define COLOR_YELLOW (0b110)
JadeEtoile 0:e894a0665114 16 #define COLOR_GREEN (0b010)
JadeEtoile 0:e894a0665114 17 #define COLOR_BLUE (0b001)
JadeEtoile 0:e894a0665114 18 #define COLOR_CYAN (0b011)
JadeEtoile 0:e894a0665114 19 #define COLOR_MAZENTA (0b101)
JadeEtoile 0:e894a0665114 20 #define COLOR_WHITE (0b111)
JadeEtoile 0:e894a0665114 21 #define COLOR_BLACK (0b000)
JadeEtoile 0:e894a0665114 22
yukisega 1:8485adfbbd18 23
yukisega 1:8485adfbbd18 24
yukisega 1:8485adfbbd18 25 /*** Network Information ***/
yukisega 1:8485adfbbd18 26 ///myIpAddrこのモータドライバのIPアドレスを入力
yukisega 1:8485adfbbd18 27 #define myIpAddr "10.42.0.98"
yukisega 1:8485adfbbd18 28 /// myPortこのプログラムで使用するポートを入力
yukisega 1:8485adfbbd18 29 #define myPort 50000
yukisega 1:8485adfbbd18 30 /// NetMask このモータドライバ用のネットマスクを入力
yukisega 1:8485adfbbd18 31 #define NetMask "255.255.255.0"
yukisega 1:8485adfbbd18 32 /// Gateway このモータドライバ用のゲートウェイを入力
yukisega 1:8485adfbbd18 33 #define Gateway "10.42.0.1"
yukisega 1:8485adfbbd18 34
yukisega 1:8485adfbbd18 35 //Network
yukisega 1:8485adfbbd18 36 DigitalOut EthRecv_LED(LED1);
yukisega 1:8485adfbbd18 37 DigitalOut EthSend_LED(LED2);
yukisega 1:8485adfbbd18 38 DigitalOut Ethconnect_LED(LED4);
yukisega 1:8485adfbbd18 39
JadeEtoile 0:e894a0665114 40 DigitalOut led_ctrl_5v(p8);
JadeEtoile 0:e894a0665114 41 DigitalOut led_ctrl_12v(p9);
JadeEtoile 0:e894a0665114 42 DigitalOut led_ctrl_24v(p10);
JadeEtoile 0:e894a0665114 43 DigitalOut led_ctrl_main(p6);
JadeEtoile 0:e894a0665114 44 DigitalOut led_motor_main_fuse(p5);
JadeEtoile 0:e894a0665114 45 DigitalOut led_motor_12v_fuse(p7);
JadeEtoile 0:e894a0665114 46 DigitalOut led_motor_main(p11);
JadeEtoile 0:e894a0665114 47 DigitalOut led_motor_12v(p17);
JadeEtoile 0:e894a0665114 48
JadeEtoile 0:e894a0665114 49 DigitalIn relay_ctrl_main(p14, PullNone);
JadeEtoile 0:e894a0665114 50 DigitalIn relay_motor_main(p12, PullNone);
JadeEtoile 0:e894a0665114 51 DigitalIn relay_motor_12v(p13, PullNone);
JadeEtoile 0:e894a0665114 52
JadeEtoile 0:e894a0665114 53 AnalogIn ad_ctrl_main(p20);
JadeEtoile 0:e894a0665114 54
JadeEtoile 0:e894a0665114 55 Serial pc(USBTX, USBRX, 9600);
JadeEtoile 0:e894a0665114 56
yukisega 1:8485adfbbd18 57 Mutex g_mtx;
yukisega 1:8485adfbbd18 58 typedef struct{
yukisega 1:8485adfbbd18 59 char color,data;
yukisega 1:8485adfbbd18 60 }MONITOR;
yukisega 1:8485adfbbd18 61
yukisega 1:8485adfbbd18 62 MONITOR mon;
yukisega 1:8485adfbbd18 63
yukisega 1:8485adfbbd18 64
yukisega 1:8485adfbbd18 65
JadeEtoile 0:e894a0665114 66 I2C i2c_master(p28, p27);
JadeEtoile 0:e894a0665114 67 const char master_addr = 0x70;
JadeEtoile 0:e894a0665114 68
JadeEtoile 0:e894a0665114 69 /*CAN*/
JadeEtoile 0:e894a0665114 70 CAN can_master(p30, p29);
JadeEtoile 0:e894a0665114 71
JadeEtoile 0:e894a0665114 72 void LedCheck(void);
JadeEtoile 0:e894a0665114 73
yukisega 1:8485adfbbd18 74 //Ehternet Thread
yukisega 1:8485adfbbd18 75 void ethernet_thread(void){
yukisega 1:8485adfbbd18 76 char in_buf[64];
yukisega 1:8485adfbbd18 77
yukisega 1:8485adfbbd18 78 EthernetInterface eth;
yukisega 1:8485adfbbd18 79 //eth.init();
yukisega 1:8485adfbbd18 80 eth.init(myIpAddr,NetMask,Gateway);
yukisega 1:8485adfbbd18 81 eth.connect();
yukisega 1:8485adfbbd18 82 printf("\nServer IP Address is %s\n", eth.getIPAddress());
yukisega 1:8485adfbbd18 83
yukisega 1:8485adfbbd18 84 TCPSocketServer server;
yukisega 1:8485adfbbd18 85 server.bind(myPort);
yukisega 1:8485adfbbd18 86 server.listen();
yukisega 1:8485adfbbd18 87
yukisega 1:8485adfbbd18 88 while (true) {
yukisega 1:8485adfbbd18 89 printf("\nWait for new connection...\n");
yukisega 1:8485adfbbd18 90 TCPSocketConnection *client = new TCPSocketConnection;
yukisega 1:8485adfbbd18 91 server.accept(*client);
yukisega 1:8485adfbbd18 92
yukisega 1:8485adfbbd18 93 printf("Connection from: %s\n", client->get_address());
yukisega 1:8485adfbbd18 94
yukisega 1:8485adfbbd18 95 while (client->is_connected()) {
yukisega 1:8485adfbbd18 96
yukisega 1:8485adfbbd18 97 Ethconnect_LED = 1;
yukisega 1:8485adfbbd18 98 int len = client->receive(in_buf, sizeof(in_buf));
yukisega 1:8485adfbbd18 99 EthRecv_LED = !EthRecv_LED;
yukisega 1:8485adfbbd18 100 // print received message to terminal
yukisega 1:8485adfbbd18 101 // in_buf[len] = '\0';
yukisega 1:8485adfbbd18 102 if(len > 0){
yukisega 1:8485adfbbd18 103 // Timeout_timer.reset();
yukisega 1:8485adfbbd18 104 in_buf[len] = '\0';
yukisega 1:8485adfbbd18 105 //Get data
yukisega 1:8485adfbbd18 106 EthRecv_LED = !EthRecv_LED;
yukisega 1:8485adfbbd18 107 g_mtx.lock();
yukisega 1:8485adfbbd18 108 memcpy(&mon.color, &in_buf[0], 1);
yukisega 1:8485adfbbd18 109 memcpy(&mon.data, &in_buf[1], 1);
yukisega 1:8485adfbbd18 110 //printf("Received message from Client :'%f'\n",pipe_pwmduty);
yukisega 1:8485adfbbd18 111 g_mtx.unlock();
yukisega 1:8485adfbbd18 112 }
yukisega 1:8485adfbbd18 113 }
yukisega 1:8485adfbbd18 114 printf("\nclient closed\n");
yukisega 1:8485adfbbd18 115 Ethconnect_LED = 0;
yukisega 1:8485adfbbd18 116 client->close();
yukisega 1:8485adfbbd18 117 delete client;
yukisega 1:8485adfbbd18 118 }
yukisega 1:8485adfbbd18 119 }
yukisega 1:8485adfbbd18 120
yukisega 1:8485adfbbd18 121
JadeEtoile 0:e894a0665114 122 // main() runs in its own thread in the OS
JadeEtoile 0:e894a0665114 123 int main()
JadeEtoile 0:e894a0665114 124 {
JadeEtoile 0:e894a0665114 125 float voltage_ctrl_main = 0.0;
JadeEtoile 0:e894a0665114 126 char command;
JadeEtoile 0:e894a0665114 127 char address;
JadeEtoile 0:e894a0665114 128 char data[8];
JadeEtoile 0:e894a0665114 129 char can_data[2];
JadeEtoile 0:e894a0665114 130 led_ctrl_5v = OFF;
JadeEtoile 0:e894a0665114 131 led_ctrl_12v = OFF;
JadeEtoile 0:e894a0665114 132 led_ctrl_24v = OFF;
JadeEtoile 0:e894a0665114 133 led_ctrl_main = OFF;
JadeEtoile 0:e894a0665114 134 led_motor_main_fuse = OFF;
JadeEtoile 0:e894a0665114 135 led_motor_12v_fuse = OFF;
JadeEtoile 0:e894a0665114 136 led_motor_main = OFF;
JadeEtoile 0:e894a0665114 137 led_motor_12v = OFF;
JadeEtoile 0:e894a0665114 138
JadeEtoile 0:e894a0665114 139 LedCheck();
JadeEtoile 0:e894a0665114 140
JadeEtoile 0:e894a0665114 141 while (true) {
JadeEtoile 0:e894a0665114 142 /*address = 0b1001000;
JadeEtoile 0:e894a0665114 143 command = 0b10000011;
JadeEtoile 0:e894a0665114 144 i2c_master.write(address, &command, 1, true);
JadeEtoile 0:e894a0665114 145 wait_us(300);
JadeEtoile 0:e894a0665114 146 i2c_master.read(address, &data[0], 1, true);
JadeEtoile 0:e894a0665114 147
JadeEtoile 0:e894a0665114 148 command = 0b10010011;
JadeEtoile 0:e894a0665114 149 i2c_master.write(address, &command, 1);
JadeEtoile 0:e894a0665114 150 wait_us(300);
JadeEtoile 0:e894a0665114 151 i2c_master.read(address, &data[1], 1, true);
JadeEtoile 0:e894a0665114 152
JadeEtoile 0:e894a0665114 153 command = 0b10100011;
JadeEtoile 0:e894a0665114 154 i2c_master.write(address, &command, 1);
JadeEtoile 0:e894a0665114 155 wait_us(300);
JadeEtoile 0:e894a0665114 156 i2c_master.read(address, &data[2], 1, true);
JadeEtoile 0:e894a0665114 157
JadeEtoile 0:e894a0665114 158 command = 0b10110011;
JadeEtoile 0:e894a0665114 159 i2c_master.write(address, &command, 1);
JadeEtoile 0:e894a0665114 160 wait_us(300);
JadeEtoile 0:e894a0665114 161 i2c_master.read(address, &data[3], 1, true);
JadeEtoile 0:e894a0665114 162
JadeEtoile 0:e894a0665114 163 voltage_ctrl_main = (ad_ctrl_main.read() * 104.0 * 3.3 / 13.0);*/
JadeEtoile 0:e894a0665114 164 led_ctrl_main = relay_ctrl_main;
JadeEtoile 0:e894a0665114 165 led_motor_main_fuse = relay_motor_main;
JadeEtoile 0:e894a0665114 166 led_motor_main = relay_motor_main;
JadeEtoile 0:e894a0665114 167 led_motor_12v_fuse = relay_motor_12v;
JadeEtoile 0:e894a0665114 168 //printf("%04x\t%04x\t%04x\t%04x\t", data[0], data[1], data[2], data[3]);
JadeEtoile 0:e894a0665114 169 //printf("%f(v)\n", voltage_ctrl_main);
JadeEtoile 0:e894a0665114 170
JadeEtoile 0:e894a0665114 171 if(ON == relay_motor_main)
JadeEtoile 0:e894a0665114 172 {
JadeEtoile 0:e894a0665114 173 can_data[0] = COLOR_YELLOW;
JadeEtoile 0:e894a0665114 174 can_data[1] = 0x10;
JadeEtoile 0:e894a0665114 175 }
JadeEtoile 0:e894a0665114 176 else
JadeEtoile 0:e894a0665114 177 {
JadeEtoile 0:e894a0665114 178 can_data[0] = COLOR_RED;
JadeEtoile 0:e894a0665114 179 can_data[1] = 0x10;
JadeEtoile 0:e894a0665114 180 }
JadeEtoile 0:e894a0665114 181 CANMessage msg(0x1852, can_data, sizeof(can_data), CANData, CANStandard);
JadeEtoile 0:e894a0665114 182 can_master.write(msg);
JadeEtoile 0:e894a0665114 183 }
JadeEtoile 0:e894a0665114 184 }
JadeEtoile 0:e894a0665114 185
JadeEtoile 0:e894a0665114 186 void LedCheck(void)
JadeEtoile 0:e894a0665114 187 {
JadeEtoile 0:e894a0665114 188 led_ctrl_5v = ON;
JadeEtoile 0:e894a0665114 189 wait(0.05f);
JadeEtoile 0:e894a0665114 190 led_ctrl_5v = OFF;
JadeEtoile 0:e894a0665114 191
JadeEtoile 0:e894a0665114 192 led_ctrl_12v = ON;
JadeEtoile 0:e894a0665114 193 wait(0.05f);
JadeEtoile 0:e894a0665114 194 led_ctrl_12v = OFF;
JadeEtoile 0:e894a0665114 195
JadeEtoile 0:e894a0665114 196 led_ctrl_24v = ON;
JadeEtoile 0:e894a0665114 197 wait(0.05f);
JadeEtoile 0:e894a0665114 198 led_ctrl_24v = OFF;
JadeEtoile 0:e894a0665114 199
JadeEtoile 0:e894a0665114 200 led_ctrl_main = ON;
JadeEtoile 0:e894a0665114 201 wait(0.05f);
JadeEtoile 0:e894a0665114 202 led_ctrl_main = OFF;
JadeEtoile 0:e894a0665114 203
JadeEtoile 0:e894a0665114 204 led_motor_main_fuse = ON;
JadeEtoile 0:e894a0665114 205 wait(0.05f);
JadeEtoile 0:e894a0665114 206 led_motor_main_fuse = OFF;
JadeEtoile 0:e894a0665114 207
JadeEtoile 0:e894a0665114 208 led_motor_12v_fuse = ON;
JadeEtoile 0:e894a0665114 209 wait(0.05f);
JadeEtoile 0:e894a0665114 210 led_motor_12v_fuse = OFF;
JadeEtoile 0:e894a0665114 211
JadeEtoile 0:e894a0665114 212 led_motor_main = ON;
JadeEtoile 0:e894a0665114 213 wait(0.05f);
JadeEtoile 0:e894a0665114 214 led_motor_main = OFF;
JadeEtoile 0:e894a0665114 215
JadeEtoile 0:e894a0665114 216 led_motor_12v = ON;
JadeEtoile 0:e894a0665114 217 wait(0.05f);
JadeEtoile 0:e894a0665114 218 led_motor_12v = OFF;
JadeEtoile 0:e894a0665114 219
JadeEtoile 0:e894a0665114 220 led_ctrl_5v = ON;
JadeEtoile 0:e894a0665114 221 led_ctrl_12v = ON;
JadeEtoile 0:e894a0665114 222 led_ctrl_24v = ON;
JadeEtoile 0:e894a0665114 223 led_ctrl_main = ON;
JadeEtoile 0:e894a0665114 224 led_motor_main_fuse = ON;
JadeEtoile 0:e894a0665114 225 led_motor_12v_fuse = ON;
JadeEtoile 0:e894a0665114 226 led_motor_main = ON;
JadeEtoile 0:e894a0665114 227 led_motor_12v = ON;
JadeEtoile 0:e894a0665114 228 wait(0.2f);
JadeEtoile 0:e894a0665114 229
JadeEtoile 0:e894a0665114 230 led_ctrl_12v = OFF;
JadeEtoile 0:e894a0665114 231 led_ctrl_5v = OFF;
JadeEtoile 0:e894a0665114 232 led_ctrl_24v = OFF;
JadeEtoile 0:e894a0665114 233 led_ctrl_main = OFF;
JadeEtoile 0:e894a0665114 234 led_motor_main_fuse = OFF;
JadeEtoile 0:e894a0665114 235 led_motor_12v_fuse = OFF;
JadeEtoile 0:e894a0665114 236 led_motor_main = OFF;
JadeEtoile 0:e894a0665114 237 led_motor_12v = OFF;
JadeEtoile 0:e894a0665114 238
JadeEtoile 0:e894a0665114 239 }