yuki makura / Mbed 2 deprecated 2018_wamv_sw_panel

Dependencies:   mbed mbed-rtos EthernetInterface

Committer:
yukisega
Date:
Mon Dec 10 20:26:49 2018 +0000
Branch:
add_TCP_Socket
Revision:
3:791851ed2989
Parent:
1:8485adfbbd18
fix start thread

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 {
yukisega 3:791851ed2989 125 /* Start Thread */
yukisega 3:791851ed2989 126 Thread thread_get(ethernet_thread);
yukisega 3:791851ed2989 127
JadeEtoile 0:e894a0665114 128 float voltage_ctrl_main = 0.0;
JadeEtoile 0:e894a0665114 129 char command;
JadeEtoile 0:e894a0665114 130 char address;
JadeEtoile 0:e894a0665114 131 char data[8];
JadeEtoile 0:e894a0665114 132 char can_data[2];
JadeEtoile 0:e894a0665114 133 led_ctrl_5v = OFF;
JadeEtoile 0:e894a0665114 134 led_ctrl_12v = OFF;
JadeEtoile 0:e894a0665114 135 led_ctrl_24v = OFF;
JadeEtoile 0:e894a0665114 136 led_ctrl_main = OFF;
JadeEtoile 0:e894a0665114 137 led_motor_main_fuse = OFF;
JadeEtoile 0:e894a0665114 138 led_motor_12v_fuse = OFF;
JadeEtoile 0:e894a0665114 139 led_motor_main = OFF;
JadeEtoile 0:e894a0665114 140 led_motor_12v = OFF;
JadeEtoile 0:e894a0665114 141
JadeEtoile 0:e894a0665114 142 LedCheck();
JadeEtoile 0:e894a0665114 143
JadeEtoile 0:e894a0665114 144 while (true) {
JadeEtoile 0:e894a0665114 145 /*address = 0b1001000;
JadeEtoile 0:e894a0665114 146 command = 0b10000011;
JadeEtoile 0:e894a0665114 147 i2c_master.write(address, &command, 1, true);
JadeEtoile 0:e894a0665114 148 wait_us(300);
JadeEtoile 0:e894a0665114 149 i2c_master.read(address, &data[0], 1, true);
JadeEtoile 0:e894a0665114 150
JadeEtoile 0:e894a0665114 151 command = 0b10010011;
JadeEtoile 0:e894a0665114 152 i2c_master.write(address, &command, 1);
JadeEtoile 0:e894a0665114 153 wait_us(300);
JadeEtoile 0:e894a0665114 154 i2c_master.read(address, &data[1], 1, true);
JadeEtoile 0:e894a0665114 155
JadeEtoile 0:e894a0665114 156 command = 0b10100011;
JadeEtoile 0:e894a0665114 157 i2c_master.write(address, &command, 1);
JadeEtoile 0:e894a0665114 158 wait_us(300);
JadeEtoile 0:e894a0665114 159 i2c_master.read(address, &data[2], 1, true);
JadeEtoile 0:e894a0665114 160
JadeEtoile 0:e894a0665114 161 command = 0b10110011;
JadeEtoile 0:e894a0665114 162 i2c_master.write(address, &command, 1);
JadeEtoile 0:e894a0665114 163 wait_us(300);
JadeEtoile 0:e894a0665114 164 i2c_master.read(address, &data[3], 1, true);
JadeEtoile 0:e894a0665114 165
JadeEtoile 0:e894a0665114 166 voltage_ctrl_main = (ad_ctrl_main.read() * 104.0 * 3.3 / 13.0);*/
JadeEtoile 0:e894a0665114 167 led_ctrl_main = relay_ctrl_main;
JadeEtoile 0:e894a0665114 168 led_motor_main_fuse = relay_motor_main;
JadeEtoile 0:e894a0665114 169 led_motor_main = relay_motor_main;
JadeEtoile 0:e894a0665114 170 led_motor_12v_fuse = relay_motor_12v;
JadeEtoile 0:e894a0665114 171 //printf("%04x\t%04x\t%04x\t%04x\t", data[0], data[1], data[2], data[3]);
JadeEtoile 0:e894a0665114 172 //printf("%f(v)\n", voltage_ctrl_main);
JadeEtoile 0:e894a0665114 173
JadeEtoile 0:e894a0665114 174 if(ON == relay_motor_main)
JadeEtoile 0:e894a0665114 175 {
JadeEtoile 0:e894a0665114 176 can_data[0] = COLOR_YELLOW;
JadeEtoile 0:e894a0665114 177 can_data[1] = 0x10;
JadeEtoile 0:e894a0665114 178 }
JadeEtoile 0:e894a0665114 179 else
JadeEtoile 0:e894a0665114 180 {
JadeEtoile 0:e894a0665114 181 can_data[0] = COLOR_RED;
JadeEtoile 0:e894a0665114 182 can_data[1] = 0x10;
JadeEtoile 0:e894a0665114 183 }
JadeEtoile 0:e894a0665114 184 CANMessage msg(0x1852, can_data, sizeof(can_data), CANData, CANStandard);
JadeEtoile 0:e894a0665114 185 can_master.write(msg);
JadeEtoile 0:e894a0665114 186 }
JadeEtoile 0:e894a0665114 187 }
JadeEtoile 0:e894a0665114 188
JadeEtoile 0:e894a0665114 189 void LedCheck(void)
JadeEtoile 0:e894a0665114 190 {
JadeEtoile 0:e894a0665114 191 led_ctrl_5v = ON;
JadeEtoile 0:e894a0665114 192 wait(0.05f);
JadeEtoile 0:e894a0665114 193 led_ctrl_5v = OFF;
JadeEtoile 0:e894a0665114 194
JadeEtoile 0:e894a0665114 195 led_ctrl_12v = ON;
JadeEtoile 0:e894a0665114 196 wait(0.05f);
JadeEtoile 0:e894a0665114 197 led_ctrl_12v = OFF;
JadeEtoile 0:e894a0665114 198
JadeEtoile 0:e894a0665114 199 led_ctrl_24v = ON;
JadeEtoile 0:e894a0665114 200 wait(0.05f);
JadeEtoile 0:e894a0665114 201 led_ctrl_24v = OFF;
JadeEtoile 0:e894a0665114 202
JadeEtoile 0:e894a0665114 203 led_ctrl_main = ON;
JadeEtoile 0:e894a0665114 204 wait(0.05f);
JadeEtoile 0:e894a0665114 205 led_ctrl_main = OFF;
JadeEtoile 0:e894a0665114 206
JadeEtoile 0:e894a0665114 207 led_motor_main_fuse = ON;
JadeEtoile 0:e894a0665114 208 wait(0.05f);
JadeEtoile 0:e894a0665114 209 led_motor_main_fuse = OFF;
JadeEtoile 0:e894a0665114 210
JadeEtoile 0:e894a0665114 211 led_motor_12v_fuse = ON;
JadeEtoile 0:e894a0665114 212 wait(0.05f);
JadeEtoile 0:e894a0665114 213 led_motor_12v_fuse = OFF;
JadeEtoile 0:e894a0665114 214
JadeEtoile 0:e894a0665114 215 led_motor_main = ON;
JadeEtoile 0:e894a0665114 216 wait(0.05f);
JadeEtoile 0:e894a0665114 217 led_motor_main = OFF;
JadeEtoile 0:e894a0665114 218
JadeEtoile 0:e894a0665114 219 led_motor_12v = ON;
JadeEtoile 0:e894a0665114 220 wait(0.05f);
JadeEtoile 0:e894a0665114 221 led_motor_12v = OFF;
JadeEtoile 0:e894a0665114 222
JadeEtoile 0:e894a0665114 223 led_ctrl_5v = ON;
JadeEtoile 0:e894a0665114 224 led_ctrl_12v = ON;
JadeEtoile 0:e894a0665114 225 led_ctrl_24v = ON;
JadeEtoile 0:e894a0665114 226 led_ctrl_main = ON;
JadeEtoile 0:e894a0665114 227 led_motor_main_fuse = ON;
JadeEtoile 0:e894a0665114 228 led_motor_12v_fuse = ON;
JadeEtoile 0:e894a0665114 229 led_motor_main = ON;
JadeEtoile 0:e894a0665114 230 led_motor_12v = ON;
JadeEtoile 0:e894a0665114 231 wait(0.2f);
JadeEtoile 0:e894a0665114 232
JadeEtoile 0:e894a0665114 233 led_ctrl_12v = OFF;
JadeEtoile 0:e894a0665114 234 led_ctrl_5v = OFF;
JadeEtoile 0:e894a0665114 235 led_ctrl_24v = OFF;
JadeEtoile 0:e894a0665114 236 led_ctrl_main = OFF;
JadeEtoile 0:e894a0665114 237 led_motor_main_fuse = OFF;
JadeEtoile 0:e894a0665114 238 led_motor_12v_fuse = OFF;
JadeEtoile 0:e894a0665114 239 led_motor_main = OFF;
JadeEtoile 0:e894a0665114 240 led_motor_12v = OFF;
JadeEtoile 0:e894a0665114 241
JadeEtoile 0:e894a0665114 242 }