APC UPS monitoring program

Dependencies:   EthernetInterface NetworkAPI mbed-rtos mbed

Fork of ups_mon_141217_bumisee by jinbeom kim

Committer:
bumisee
Date:
Mon Jan 19 02:40:27 2015 +0000
Revision:
0:fb1f6d3926fe
v1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bumisee 0:fb1f6d3926fe 1 #include "mbed.h"
bumisee 0:fb1f6d3926fe 2 #include "rtos.h"
bumisee 0:fb1f6d3926fe 3 #include "USBHost.h"
bumisee 0:fb1f6d3926fe 4 #include "EthernetInterface.h"
bumisee 0:fb1f6d3926fe 5 #include "NetworkAPI/buffer.hpp"
bumisee 0:fb1f6d3926fe 6 #include "NetworkAPI/ip/address.hpp"
bumisee 0:fb1f6d3926fe 7 #include "NetworkAPI/tcp/socket.hpp"
bumisee 0:fb1f6d3926fe 8 /////////////////////////////////////////////////
bumisee 0:fb1f6d3926fe 9 // Reset time
bumisee 0:fb1f6d3926fe 10 // 1. TCP server connect error 5 times
bumisee 0:fb1f6d3926fe 11 // 2. Server send '$'
bumisee 0:fb1f6d3926fe 12 // 3. Day reset(12 or 24hours)
bumisee 0:fb1f6d3926fe 13 // 4. Server not request 10 min
bumisee 0:fb1f6d3926fe 14 /////////////////////////////////////////////////
bumisee 0:fb1f6d3926fe 15
bumisee 0:fb1f6d3926fe 16 Serial pc(USBTX, USBRX);
bumisee 0:fb1f6d3926fe 17
bumisee 0:fb1f6d3926fe 18 //DIO Setting
bumisee 0:fb1f6d3926fe 19
bumisee 0:fb1f6d3926fe 20 DigitalOut MODE1(p30);
bumisee 0:fb1f6d3926fe 21 DigitalOut MODE2(p29);
bumisee 0:fb1f6d3926fe 22 DigitalOut SEL1(p28);
bumisee 0:fb1f6d3926fe 23 DigitalOut SEL2(p27);
bumisee 0:fb1f6d3926fe 24 DigitalOut USB_S(p26);
bumisee 0:fb1f6d3926fe 25 DigitalOut TCP_S(p25);
bumisee 0:fb1f6d3926fe 26
bumisee 0:fb1f6d3926fe 27 DigitalIn S100_1(p5);
bumisee 0:fb1f6d3926fe 28 DigitalIn S100_2(p6);
bumisee 0:fb1f6d3926fe 29 DigitalIn S100_4(p7);
bumisee 0:fb1f6d3926fe 30 DigitalIn S100_8(p8);
bumisee 0:fb1f6d3926fe 31 DigitalIn S10_1(p9);
bumisee 0:fb1f6d3926fe 32 DigitalIn S10_2(p10);
bumisee 0:fb1f6d3926fe 33 DigitalIn S10_4(p11);
bumisee 0:fb1f6d3926fe 34 DigitalIn S10_8(p12);
bumisee 0:fb1f6d3926fe 35 DigitalIn S1_1(p13);
bumisee 0:fb1f6d3926fe 36 DigitalIn S1_2(p14);
bumisee 0:fb1f6d3926fe 37 DigitalIn S1_4(p15);
bumisee 0:fb1f6d3926fe 38 DigitalIn S1_8(p16);
bumisee 0:fb1f6d3926fe 39
bumisee 0:fb1f6d3926fe 40 DigitalIn MODE_S(p17);
bumisee 0:fb1f6d3926fe 41 DigitalIn SEL_S(p18);
bumisee 0:fb1f6d3926fe 42 DigitalIn SET_S(p19);
bumisee 0:fb1f6d3926fe 43
bumisee 0:fb1f6d3926fe 44 network::tcp::Socket socket;
bumisee 0:fb1f6d3926fe 45 network::Buffer buffer(256);
bumisee 0:fb1f6d3926fe 46 EthernetInterface interface;
bumisee 0:fb1f6d3926fe 47 int u_flag,u_r_done,u_r_done_buf;
bumisee 0:fb1f6d3926fe 48 int ups_connect_state,tcp_connect_state;
bumisee 0:fb1f6d3926fe 49 int ups_state,ups_time,ups_capacity;
bumisee 0:fb1f6d3926fe 50 u8 u_data[256];
bumisee 0:fb1f6d3926fe 51 u8 u_buffer[256];
bumisee 0:fb1f6d3926fe 52 char u_temp[256];
bumisee 0:fb1f6d3926fe 53 char l_temp[256];
bumisee 0:fb1f6d3926fe 54 int ms_count=0;
bumisee 0:fb1f6d3926fe 55 int m_count=0;
bumisee 0:fb1f6d3926fe 56 int day_reset_flag=0;
bumisee 0:fb1f6d3926fe 57 int rq_reset_flag=2;
bumisee 0:fb1f6d3926fe 58
bumisee 0:fb1f6d3926fe 59 extern "C" void mbed_reset();
bumisee 0:fb1f6d3926fe 60 int event_state = 0;
bumisee 0:fb1f6d3926fe 61 int d_reset[3]={0,12,24};
bumisee 0:fb1f6d3926fe 62 int r_reset[3]={0,5,10};
bumisee 0:fb1f6d3926fe 63 int server_rq_count;
bumisee 0:fb1f6d3926fe 64 void display_ups_state(void);
bumisee 0:fb1f6d3926fe 65 //TCP thread
bumisee 0:fb1f6d3926fe 66 void TCP_thread(void const *args)
bumisee 0:fb1f6d3926fe 67 {
bumisee 0:fb1f6d3926fe 68 tcp_connect_state = TCP_DISCONNECT;
bumisee 0:fb1f6d3926fe 69 server_rq_count=0;
bumisee 0:fb1f6d3926fe 70 printf(">TCP thread start\r\n");
bumisee 0:fb1f6d3926fe 71 int result;
bumisee 0:fb1f6d3926fe 72 int rc_count=0;
bumisee 0:fb1f6d3926fe 73 int id=21;
bumisee 0:fb1f6d3926fe 74 char ip[15];
bumisee 0:fb1f6d3926fe 75 std::string request("@");
bumisee 0:fb1f6d3926fe 76
bumisee 0:fb1f6d3926fe 77
bumisee 0:fb1f6d3926fe 78 //IP SET
bumisee 0:fb1f6d3926fe 79 id = (100*((S100_1*1)+(S100_2*2)))+(10*((S10_1*1)+(S10_2*2)+(S10_4*4)+(S10_8*8)))+((S1_1*1)+(S1_2*2)+(S1_4*4)+(S1_8*8));
bumisee 0:fb1f6d3926fe 80 snprintf(ip,sizeof(ip),"192.168.205.%d",id);
bumisee 0:fb1f6d3926fe 81 interface.init((char *)ip,"255.255.0.0","192.168.1.1");
bumisee 0:fb1f6d3926fe 82 //Ether set
bumisee 0:fb1f6d3926fe 83 interface.connect();
bumisee 0:fb1f6d3926fe 84 printf("IP Address is %s\n\r", interface.getIPAddress());
bumisee 0:fb1f6d3926fe 85
bumisee 0:fb1f6d3926fe 86 //Socket open
bumisee 0:fb1f6d3926fe 87 if(socket.open() < 0) {
bumisee 0:fb1f6d3926fe 88 printf("Failed to open TCP Socket\n\r");
bumisee 0:fb1f6d3926fe 89
bumisee 0:fb1f6d3926fe 90 }
bumisee 0:fb1f6d3926fe 91 //Socket connect - 5 time retry and reset
bumisee 0:fb1f6d3926fe 92 do{
bumisee 0:fb1f6d3926fe 93 if( (result = socket.connect("192.168.200.11", 7900))< 0){
bumisee 0:fb1f6d3926fe 94 if(rc_count>=5)
bumisee 0:fb1f6d3926fe 95 mbed_reset();
bumisee 0:fb1f6d3926fe 96
bumisee 0:fb1f6d3926fe 97 printf("Failed to connect with Server(%d)\n\r",result);
bumisee 0:fb1f6d3926fe 98 rc_count++;
bumisee 0:fb1f6d3926fe 99 }
bumisee 0:fb1f6d3926fe 100
bumisee 0:fb1f6d3926fe 101
bumisee 0:fb1f6d3926fe 102 }
bumisee 0:fb1f6d3926fe 103 while(result<0);
bumisee 0:fb1f6d3926fe 104 tcp_connect_state = TCP_CONNECT;
bumisee 0:fb1f6d3926fe 105 TCP_S = 1;
bumisee 0:fb1f6d3926fe 106
bumisee 0:fb1f6d3926fe 107 //Send Connection message to server
bumisee 0:fb1f6d3926fe 108 if (socket.write((void *)request.data(), request.size()) < 0) {
bumisee 0:fb1f6d3926fe 109 printf("Failed to write request\n\r");
bumisee 0:fb1f6d3926fe 110
bumisee 0:fb1f6d3926fe 111 }
bumisee 0:fb1f6d3926fe 112
bumisee 0:fb1f6d3926fe 113 //Recieve Loop
bumisee 0:fb1f6d3926fe 114 do
bumisee 0:fb1f6d3926fe 115 {
bumisee 0:fb1f6d3926fe 116 result = socket.read(buffer);
bumisee 0:fb1f6d3926fe 117 strcpy((char *)u_buffer, (char *)buffer.data());
bumisee 0:fb1f6d3926fe 118
bumisee 0:fb1f6d3926fe 119 printf("Received %d bytes:\n\r%s\n\r", result, (char *)buffer.data());
bumisee 0:fb1f6d3926fe 120 //Data request
bumisee 0:fb1f6d3926fe 121 if(u_buffer[0] == '!'){
bumisee 0:fb1f6d3926fe 122
bumisee 0:fb1f6d3926fe 123
bumisee 0:fb1f6d3926fe 124 socket.write((void *)u_temp, sizeof(u_temp));
bumisee 0:fb1f6d3926fe 125 }
bumisee 0:fb1f6d3926fe 126 //reset
bumisee 0:fb1f6d3926fe 127 else if(u_buffer[0] == '$'){
bumisee 0:fb1f6d3926fe 128 printf("Reset bye bye!!\r\n");
bumisee 0:fb1f6d3926fe 129 Thread::wait(1000);
bumisee 0:fb1f6d3926fe 130 mbed_reset();
bumisee 0:fb1f6d3926fe 131 }
bumisee 0:fb1f6d3926fe 132 server_rq_count=0;
bumisee 0:fb1f6d3926fe 133 } while(result > 0);
bumisee 0:fb1f6d3926fe 134
bumisee 0:fb1f6d3926fe 135 socket.close();
bumisee 0:fb1f6d3926fe 136
bumisee 0:fb1f6d3926fe 137
bumisee 0:fb1f6d3926fe 138 }
bumisee 0:fb1f6d3926fe 139
bumisee 0:fb1f6d3926fe 140 //Time&Event thread
bumisee 0:fb1f6d3926fe 141 void Event_thread(void const *args)
bumisee 0:fb1f6d3926fe 142 {
bumisee 0:fb1f6d3926fe 143 printf(">Event thread start\r\n");
bumisee 0:fb1f6d3926fe 144 int push_count = 0;
bumisee 0:fb1f6d3926fe 145 string menu[3]={"OFF","ON 12H","ON 24H"};
bumisee 0:fb1f6d3926fe 146 string r_menu[3]={"OFF","ON 5min","ON 10min"};
bumisee 0:fb1f6d3926fe 147
bumisee 0:fb1f6d3926fe 148
bumisee 0:fb1f6d3926fe 149 while(1){
bumisee 0:fb1f6d3926fe 150 //Nomal state
bumisee 0:fb1f6d3926fe 151 if(event_state == 0){
bumisee 0:fb1f6d3926fe 152 //Day setting
bumisee 0:fb1f6d3926fe 153 if(MODE_S){
bumisee 0:fb1f6d3926fe 154 while(MODE_S){
bumisee 0:fb1f6d3926fe 155 push_count++;
bumisee 0:fb1f6d3926fe 156 if(push_count > 20){
bumisee 0:fb1f6d3926fe 157 event_state = 1;
bumisee 0:fb1f6d3926fe 158 if(day_reset_flag == 1){
bumisee 0:fb1f6d3926fe 159 MODE1 = 1;
bumisee 0:fb1f6d3926fe 160 MODE2 = 0;
bumisee 0:fb1f6d3926fe 161 SEL1 = 1;
bumisee 0:fb1f6d3926fe 162 SEL2 = 0;
bumisee 0:fb1f6d3926fe 163 }
bumisee 0:fb1f6d3926fe 164 else if(day_reset_flag == 2){
bumisee 0:fb1f6d3926fe 165 MODE1 = 1;
bumisee 0:fb1f6d3926fe 166 MODE2 = 0;
bumisee 0:fb1f6d3926fe 167 SEL1 = 0;
bumisee 0:fb1f6d3926fe 168 SEL2 = 1;
bumisee 0:fb1f6d3926fe 169 }
bumisee 0:fb1f6d3926fe 170 else{
bumisee 0:fb1f6d3926fe 171 MODE1 = 1;
bumisee 0:fb1f6d3926fe 172 MODE2 = 0;
bumisee 0:fb1f6d3926fe 173 SEL1 = 0;
bumisee 0:fb1f6d3926fe 174 SEL2 = 0;
bumisee 0:fb1f6d3926fe 175 }
bumisee 0:fb1f6d3926fe 176 while(MODE_S);
bumisee 0:fb1f6d3926fe 177 break;
bumisee 0:fb1f6d3926fe 178 }
bumisee 0:fb1f6d3926fe 179
bumisee 0:fb1f6d3926fe 180 Thread::wait(100);
bumisee 0:fb1f6d3926fe 181 }
bumisee 0:fb1f6d3926fe 182
bumisee 0:fb1f6d3926fe 183 push_count=0;
bumisee 0:fb1f6d3926fe 184 }
bumisee 0:fb1f6d3926fe 185
bumisee 0:fb1f6d3926fe 186 else if(ms_count >60000)
bumisee 0:fb1f6d3926fe 187 ms_count=0;
bumisee 0:fb1f6d3926fe 188 //ups data get
bumisee 0:fb1f6d3926fe 189 else if((ups_connect_state==UPS_CONNECT)&&(ms_count%50==0)){
bumisee 0:fb1f6d3926fe 190 //Min count
bumisee 0:fb1f6d3926fe 191 if(ms_count%600==0){
bumisee 0:fb1f6d3926fe 192 m_count++;
bumisee 0:fb1f6d3926fe 193 server_rq_count++;
bumisee 0:fb1f6d3926fe 194 //reset
bumisee 0:fb1f6d3926fe 195 if(((m_count >= 60*d_reset[day_reset_flag])&&(day_reset_flag>0))||((server_rq_count>=r_reset[rq_reset_flag])&&(rq_reset_flag>0))){
bumisee 0:fb1f6d3926fe 196 printf("Reset bye bye!!\r\n");
bumisee 0:fb1f6d3926fe 197
bumisee 0:fb1f6d3926fe 198 Thread::wait(1000);
bumisee 0:fb1f6d3926fe 199 mbed_reset();
bumisee 0:fb1f6d3926fe 200 }
bumisee 0:fb1f6d3926fe 201
bumisee 0:fb1f6d3926fe 202
bumisee 0:fb1f6d3926fe 203
bumisee 0:fb1f6d3926fe 204 }
bumisee 0:fb1f6d3926fe 205 printf(">Push %d %d\r\n",ms_count,m_count);
bumisee 0:fb1f6d3926fe 206
bumisee 0:fb1f6d3926fe 207 u_flag = 1;
bumisee 0:fb1f6d3926fe 208
bumisee 0:fb1f6d3926fe 209 }
bumisee 0:fb1f6d3926fe 210
bumisee 0:fb1f6d3926fe 211 }
bumisee 0:fb1f6d3926fe 212 //day reset setting state
bumisee 0:fb1f6d3926fe 213 else if(event_state == 1){
bumisee 0:fb1f6d3926fe 214 if(day_reset_flag == 1){
bumisee 0:fb1f6d3926fe 215 MODE1 = 1;
bumisee 0:fb1f6d3926fe 216 MODE2 = 0;
bumisee 0:fb1f6d3926fe 217 SEL1 = 1;
bumisee 0:fb1f6d3926fe 218 SEL2 = 0;
bumisee 0:fb1f6d3926fe 219 }
bumisee 0:fb1f6d3926fe 220 else if(day_reset_flag == 2){
bumisee 0:fb1f6d3926fe 221 MODE1 = 1;
bumisee 0:fb1f6d3926fe 222 MODE2 = 0;
bumisee 0:fb1f6d3926fe 223 SEL1 = 0;
bumisee 0:fb1f6d3926fe 224 SEL2 = 1;
bumisee 0:fb1f6d3926fe 225 }
bumisee 0:fb1f6d3926fe 226 else{
bumisee 0:fb1f6d3926fe 227 MODE1 = 1;
bumisee 0:fb1f6d3926fe 228 MODE2 = 0;
bumisee 0:fb1f6d3926fe 229 SEL1 = 0;
bumisee 0:fb1f6d3926fe 230 SEL2 = 0;
bumisee 0:fb1f6d3926fe 231 }
bumisee 0:fb1f6d3926fe 232
bumisee 0:fb1f6d3926fe 233 if(MODE_S){
bumisee 0:fb1f6d3926fe 234 while(MODE_S);
bumisee 0:fb1f6d3926fe 235 event_state = 2;
bumisee 0:fb1f6d3926fe 236 }
bumisee 0:fb1f6d3926fe 237
bumisee 0:fb1f6d3926fe 238
bumisee 0:fb1f6d3926fe 239 else if(SEL_S){
bumisee 0:fb1f6d3926fe 240 while(SEL_S);
bumisee 0:fb1f6d3926fe 241 day_reset_flag++;
bumisee 0:fb1f6d3926fe 242 if(day_reset_flag>2)
bumisee 0:fb1f6d3926fe 243 day_reset_flag =0;
bumisee 0:fb1f6d3926fe 244 }
bumisee 0:fb1f6d3926fe 245 //Day reset set
bumisee 0:fb1f6d3926fe 246 else if(SET_S){
bumisee 0:fb1f6d3926fe 247 while(SET_S);
bumisee 0:fb1f6d3926fe 248 event_state = 0;
bumisee 0:fb1f6d3926fe 249 MODE1 = 0;
bumisee 0:fb1f6d3926fe 250 MODE2 = 0;
bumisee 0:fb1f6d3926fe 251 SEL1 = 0;
bumisee 0:fb1f6d3926fe 252 SEL2 = 0;
bumisee 0:fb1f6d3926fe 253
bumisee 0:fb1f6d3926fe 254 display_ups_state();
bumisee 0:fb1f6d3926fe 255 }
bumisee 0:fb1f6d3926fe 256 }
bumisee 0:fb1f6d3926fe 257 //TCP reset setting
bumisee 0:fb1f6d3926fe 258 else if(event_state==2){
bumisee 0:fb1f6d3926fe 259 for(int i=0;i<3;i++){
bumisee 0:fb1f6d3926fe 260 if(rq_reset_flag == 1){
bumisee 0:fb1f6d3926fe 261 MODE1 = 0;
bumisee 0:fb1f6d3926fe 262 MODE2 = 1;
bumisee 0:fb1f6d3926fe 263 SEL1 = 1;
bumisee 0:fb1f6d3926fe 264 SEL2 = 0;
bumisee 0:fb1f6d3926fe 265 }
bumisee 0:fb1f6d3926fe 266 else if(rq_reset_flag == 2){
bumisee 0:fb1f6d3926fe 267 MODE1 = 0;
bumisee 0:fb1f6d3926fe 268 MODE2 = 1;
bumisee 0:fb1f6d3926fe 269 SEL1 = 0;
bumisee 0:fb1f6d3926fe 270 SEL2 = 1;
bumisee 0:fb1f6d3926fe 271 }
bumisee 0:fb1f6d3926fe 272 else{
bumisee 0:fb1f6d3926fe 273 MODE1 = 0;
bumisee 0:fb1f6d3926fe 274 MODE2 = 1;
bumisee 0:fb1f6d3926fe 275 SEL1 = 0;
bumisee 0:fb1f6d3926fe 276 SEL2 = 0;
bumisee 0:fb1f6d3926fe 277 }
bumisee 0:fb1f6d3926fe 278
bumisee 0:fb1f6d3926fe 279 }
bumisee 0:fb1f6d3926fe 280 if(SEL_S){
bumisee 0:fb1f6d3926fe 281 while(SEL_S);
bumisee 0:fb1f6d3926fe 282 rq_reset_flag++;
bumisee 0:fb1f6d3926fe 283 if(rq_reset_flag>2)
bumisee 0:fb1f6d3926fe 284 rq_reset_flag =0;
bumisee 0:fb1f6d3926fe 285 }
bumisee 0:fb1f6d3926fe 286 //Day reset set
bumisee 0:fb1f6d3926fe 287 else if(SET_S){
bumisee 0:fb1f6d3926fe 288 while(SET_S);
bumisee 0:fb1f6d3926fe 289 event_state = 0;
bumisee 0:fb1f6d3926fe 290 MODE1 = 0;
bumisee 0:fb1f6d3926fe 291 MODE2 = 0;
bumisee 0:fb1f6d3926fe 292 SEL1 = 0;
bumisee 0:fb1f6d3926fe 293 SEL2 = 0;
bumisee 0:fb1f6d3926fe 294 display_ups_state();
bumisee 0:fb1f6d3926fe 295 }
bumisee 0:fb1f6d3926fe 296 }
bumisee 0:fb1f6d3926fe 297
bumisee 0:fb1f6d3926fe 298 ms_count++;
bumisee 0:fb1f6d3926fe 299 Thread::wait(95);
bumisee 0:fb1f6d3926fe 300 }
bumisee 0:fb1f6d3926fe 301 }
bumisee 0:fb1f6d3926fe 302 void display_ups_state(void)
bumisee 0:fb1f6d3926fe 303 {
bumisee 0:fb1f6d3926fe 304 if(ups_connect_state == UPS_CONNECT)
bumisee 0:fb1f6d3926fe 305 USB_S = 1;
bumisee 0:fb1f6d3926fe 306 else
bumisee 0:fb1f6d3926fe 307 USB_S = 0;
bumisee 0:fb1f6d3926fe 308
bumisee 0:fb1f6d3926fe 309 if(tcp_connect_state == TCP_CONNECT)
bumisee 0:fb1f6d3926fe 310 TCP_S = 1;
bumisee 0:fb1f6d3926fe 311 else
bumisee 0:fb1f6d3926fe 312 TCP_S = 0;
bumisee 0:fb1f6d3926fe 313 switch(u_data[0])
bumisee 0:fb1f6d3926fe 314 {
bumisee 0:fb1f6d3926fe 315 case(8): { ups_state = ALLOFF;printf("[All Off]hx%02X",u_data[0]); snprintf(l_temp,sizeof(l_temp),"[All Off] %d%% %dsec \n",ups_capacity,ups_time);break;}
bumisee 0:fb1f6d3926fe 316 case(10): { ups_state = BATTERY;printf("[Battery]hx%02X",u_data[0]); snprintf(l_temp,sizeof(l_temp),"[Battery] %d%% %dsec \n",ups_capacity,ups_time);break;}
bumisee 0:fb1f6d3926fe 317 case(12): { ups_state = ONLINE;printf("[Online]hx%02X",u_data[0]); snprintf(l_temp,sizeof(l_temp),"[Online] %d%% %dsec \n",ups_capacity,ups_time);break;}
bumisee 0:fb1f6d3926fe 318 case(13): { ups_state = ONLINE;printf("[Online]hx%02X",u_data[0]); snprintf(l_temp,sizeof(l_temp),"[Online] %d%% %dsec \n",ups_capacity,ups_time);break;}
bumisee 0:fb1f6d3926fe 319 case(14): { ups_state = ONLINE;printf("[Online]hx%02X",u_data[0]); snprintf(l_temp,sizeof(l_temp),"[Online] %d%% %dsec \n",ups_capacity,ups_time);break;}
bumisee 0:fb1f6d3926fe 320 default: {snprintf(l_temp,sizeof(l_temp),"?????");};
bumisee 0:fb1f6d3926fe 321 }
bumisee 0:fb1f6d3926fe 322
bumisee 0:fb1f6d3926fe 323 if(day_reset_flag>0){
bumisee 0:fb1f6d3926fe 324 SEL1=1;
bumisee 0:fb1f6d3926fe 325 SEL2=1;
bumisee 0:fb1f6d3926fe 326 }
bumisee 0:fb1f6d3926fe 327 else{
bumisee 0:fb1f6d3926fe 328 SEL1=0;
bumisee 0:fb1f6d3926fe 329 SEL2=0;
bumisee 0:fb1f6d3926fe 330 }
bumisee 0:fb1f6d3926fe 331
bumisee 0:fb1f6d3926fe 332 }
bumisee 0:fb1f6d3926fe 333
bumisee 0:fb1f6d3926fe 334 int main(void)
bumisee 0:fb1f6d3926fe 335 {
bumisee 0:fb1f6d3926fe 336 Serial pc(USBTX, USBRX);
bumisee 0:fb1f6d3926fe 337 pc.baud(460800);
bumisee 0:fb1f6d3926fe 338 u_r_done = 0;
bumisee 0:fb1f6d3926fe 339 std::string u_sdata;
bumisee 0:fb1f6d3926fe 340 wait(3);
bumisee 0:fb1f6d3926fe 341
bumisee 0:fb1f6d3926fe 342
bumisee 0:fb1f6d3926fe 343 printf("\r\n==== mbed program start ====\r\n");
bumisee 0:fb1f6d3926fe 344 display_ups_state();
bumisee 0:fb1f6d3926fe 345 //Thread start
bumisee 0:fb1f6d3926fe 346 Thread th_console_out1(TCP_thread);
bumisee 0:fb1f6d3926fe 347 wait(0.5);
bumisee 0:fb1f6d3926fe 348 Thread th_console_out2(Event_thread);
bumisee 0:fb1f6d3926fe 349 wait(0.5);
bumisee 0:fb1f6d3926fe 350 printf(">USB Host start\r\n");
bumisee 0:fb1f6d3926fe 351 snprintf(u_temp,sizeof(u_temp),"!,%d,%d,%d,%d# \n",ups_connect_state,ups_state,ups_capacity,ups_time);
bumisee 0:fb1f6d3926fe 352 USBInit();
bumisee 0:fb1f6d3926fe 353 std::string request("TEST\r\n\r\n");
bumisee 0:fb1f6d3926fe 354 //USB Loop
bumisee 0:fb1f6d3926fe 355 for (;;){
bumisee 0:fb1f6d3926fe 356 u_r_done = USBLoop(u_flag,u_data);
bumisee 0:fb1f6d3926fe 357 //Get report
bumisee 0:fb1f6d3926fe 358 if(u_r_done==UPS_REPORT){
bumisee 0:fb1f6d3926fe 359 u_r_done_buf = u_r_done;
bumisee 0:fb1f6d3926fe 360 ups_capacity = u_data[1];
bumisee 0:fb1f6d3926fe 361 ups_time = u_data[2]+u_data[3]*256;
bumisee 0:fb1f6d3926fe 362
bumisee 0:fb1f6d3926fe 363 printf(" [Battery Capacity : %d]hx%02X",u_data[1],u_data[1]);
bumisee 0:fb1f6d3926fe 364 printf(" [Battery Time : %d]hx%02X hx%02X",(u_data[2]+u_data[3]*256),u_data[2],u_data[3]);
bumisee 0:fb1f6d3926fe 365 printf("\n");
bumisee 0:fb1f6d3926fe 366 snprintf(u_temp,sizeof(u_temp),"!,%d,%d,%d,%d# \n",ups_connect_state,ups_state,ups_capacity,ups_time);
bumisee 0:fb1f6d3926fe 367 display_ups_state();
bumisee 0:fb1f6d3926fe 368 u_flag = 0;
bumisee 0:fb1f6d3926fe 369 }
bumisee 0:fb1f6d3926fe 370
bumisee 0:fb1f6d3926fe 371 else if(u_r_done==UPS_CONNECT){
bumisee 0:fb1f6d3926fe 372 ups_connect_state = UPS_CONNECT;
bumisee 0:fb1f6d3926fe 373 USB_S = 1;
bumisee 0:fb1f6d3926fe 374
bumisee 0:fb1f6d3926fe 375 }
bumisee 0:fb1f6d3926fe 376 else if(u_r_done==UPS_DISCONNECT){
bumisee 0:fb1f6d3926fe 377 ups_connect_state = UPS_DISCONNECT;
bumisee 0:fb1f6d3926fe 378 USB_S = 1;
bumisee 0:fb1f6d3926fe 379
bumisee 0:fb1f6d3926fe 380 }
bumisee 0:fb1f6d3926fe 381 }
bumisee 0:fb1f6d3926fe 382
bumisee 0:fb1f6d3926fe 383 printf("=== mbed program end ====\r\n");
bumisee 0:fb1f6d3926fe 384 exit(1);
bumisee 0:fb1f6d3926fe 385 }
bumisee 0:fb1f6d3926fe 386
bumisee 0:fb1f6d3926fe 387