APC UPS monitoring program
Dependencies: EthernetInterface NetworkAPI mbed-rtos mbed
Fork of ups_mon_141217_bumisee by
main.cpp@0:fb1f6d3926fe, 2015-01-19 (annotated)
- Committer:
- bumisee
- Date:
- Mon Jan 19 02:40:27 2015 +0000
- Revision:
- 0:fb1f6d3926fe
v1.0
Who changed what in which revision?
User | Revision | Line number | New 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 |