Depot Pertamina / Mbed 2 deprecated Gate_FRDM

Dependencies:   EthernetInterface MbedJSONValue SDFileSystem mbed-rtos mbed

Fork of Gate_Aidik_FRDM_v2 by Depot Pertamina

Committer:
irsanjul
Date:
Thu Oct 20 03:42:29 2016 +0000
Revision:
2:e870bcd7e63b
Parent:
0:fbb75122015f
new gate aidik program

Who changed what in which revision?

UserRevisionLine numberNew contents of line
irsanjul 0:fbb75122015f 1 #include "mbed.h"
irsanjul 0:fbb75122015f 2 #include "EthernetInterface.h"
irsanjul 0:fbb75122015f 3 #include "SDFileSystem.h"
irsanjul 2:e870bcd7e63b 4 #include "MbedJSONValue.h"
irsanjul 2:e870bcd7e63b 5 #include <sstream>
irsanjul 2:e870bcd7e63b 6 #include <iostream>
irsanjul 2:e870bcd7e63b 7 #include <fstream>
irsanjul 0:fbb75122015f 8
irsanjul 0:fbb75122015f 9 #define IP_CONF_PORT 50004
irsanjul 0:fbb75122015f 10
irsanjul 0:fbb75122015f 11 #define ijo 0
irsanjul 0:fbb75122015f 12 #define merah 1
irsanjul 0:fbb75122015f 13
irsanjul 0:fbb75122015f 14 UDPSocket sock, ip_conf, trx_ser; //gen_con,
irsanjul 0:fbb75122015f 15 Endpoint multi, server; //,multi_data;
irsanjul 0:fbb75122015f 16
irsanjul 0:fbb75122015f 17 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd");
irsanjul 0:fbb75122015f 18
irsanjul 0:fbb75122015f 19 DigitalOut Stdby_R(LED2), Sopir_R(LED3), Res_R(LED1), MT_R(LED4), Gate(PTB9), Sleep(PTA1), Reset(PTB23, 1);
irsanjul 0:fbb75122015f 20 DigitalInOut Std_G(PTC5), Std_R(PTC7), Spr_G(PTC0), Spr_R(PTC9), Mt_G(PTC8), Mt_R(PTC1), Pow(PTB19), iBtn(PTB18);
irsanjul 0:fbb75122015f 21 DigitalIn print_er(PTC2), print_done(PTB2);
irsanjul 0:fbb75122015f 22
irsanjul 0:fbb75122015f 23 Serial dbg(USBTX, USBRX);
irsanjul 0:fbb75122015f 24 Serial pc(PTC17, PTC16);
irsanjul 0:fbb75122015f 25
irsanjul 2:e870bcd7e63b 26 char IP[16], SUBNET[16], GATEWAY[16], MCAST[16], IDX[5];
irsanjul 2:e870bcd7e63b 27 int PortListen, PortSend, PortHeartB;
irsanjul 0:fbb75122015f 28 int BAUD = 19200;
irsanjul 0:fbb75122015f 29
irsanjul 0:fbb75122015f 30 int width, TICK = 0;
irsanjul 0:fbb75122015f 31 unsigned char ID[8], idx, idy, id_addr = 0x33, ix, er_tmp1 = 0, er_tmp2 = 0,
irsanjul 0:fbb75122015f 32 sprmt = 0; // state = 1,
irsanjul 0:fbb75122015f 33 char text[26], ch, rx_buff[6], tx_buff[7], //86
irsanjul 2:e870bcd7e63b 34 _hex[17] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B',
irsanjul 0:fbb75122015f 35 'C', 'D', 'E', 'F' }; //,
irsanjul 0:fbb75122015f 36
irsanjul 0:fbb75122015f 37 /*Contoh format data
irsanjul 0:fbb75122015f 38 <02>GI01S0123456789ABCDEF00<03>
irsanjul 0:fbb75122015f 39 <02>GI01M0123456789ABCDEF00<03>
irsanjul 0:fbb75122015f 40 <02> ->start
irsanjul 0:fbb75122015f 41 GI -> Lokasi <G = Gate> <I = Input> <O = Output>
irsanjul 0:fbb75122015f 42 01 -> ID
irsanjul 0:fbb75122015f 43 S -> Supir <S = Supir> <M = MT>
irsanjul 0:fbb75122015f 44 0123456789ABCDEF -> iButton data
irsanjul 0:fbb75122015f 45 00 -> reserved
irsanjul 0:fbb75122015f 46 <03> -> stop
irsanjul 0:fbb75122015f 47
irsanjul 0:fbb75122015f 48 format heartbeat
irsanjul 0:fbb75122015f 49 <02>GI0100000000<03>
irsanjul 0:fbb75122015f 50
irsanjul 0:fbb75122015f 51 format validasi
irsanjul 0:fbb75122015f 52 <02>V01<03>
irsanjul 0:fbb75122015f 53 1, idle
irsanjul 0:fbb75122015f 54 2, stdby/ idle
irsanjul 0:fbb75122015f 55 3, merah/sopir
irsanjul 2:e870bcd7e63b 56 4, biru/ MT
irsanjul 0:fbb75122015f 57 5, buka gate
irsanjul 0:fbb75122015f 58
irsanjul 0:fbb75122015f 59 format ipconfig
irsanjul 0:fbb75122015f 60 <02> 192.168.1.116, 255.255.255.0, 192.168.1.1, 192.168.1.10, 50000, 50001, 50003, GI01$<03>
irsanjul 0:fbb75122015f 61 #192.168.1.116, 255.255.255.0, 192.168.1.1, 192.168.1.10, 50000, 50001, 50003, GI01$
irsanjul 0:fbb75122015f 62 2, stdby
irsanjul 0:fbb75122015f 63 3, merah/sopir
irsanjul 0:fbb75122015f 64 4, biru MT
irsanjul 0:fbb75122015f 65 */
irsanjul 0:fbb75122015f 66
irsanjul 0:fbb75122015f 67 void Standby(bool warna, bool nyala) {
irsanjul 0:fbb75122015f 68 switch (nyala) {
irsanjul 0:fbb75122015f 69 case 0:
irsanjul 0:fbb75122015f 70 if (warna == ijo) {
irsanjul 0:fbb75122015f 71 Stdby_R = 0; // led 2
irsanjul 0:fbb75122015f 72 Std_G.output();
irsanjul 0:fbb75122015f 73 Std_G.write(0);
irsanjul 0:fbb75122015f 74 Std_G.input();
irsanjul 0:fbb75122015f 75 Std_G.mode(PullUp);
irsanjul 0:fbb75122015f 76 } else if (warna == merah) {
irsanjul 0:fbb75122015f 77 Std_R.output();
irsanjul 0:fbb75122015f 78 Std_R.write(0);
irsanjul 0:fbb75122015f 79 Std_R.input();
irsanjul 0:fbb75122015f 80 Std_R.mode(PullUp);
irsanjul 0:fbb75122015f 81 }
irsanjul 0:fbb75122015f 82 break;
irsanjul 0:fbb75122015f 83 case 1:
irsanjul 0:fbb75122015f 84 if (warna == ijo) {
irsanjul 0:fbb75122015f 85 Stdby_R = 1;
irsanjul 0:fbb75122015f 86 Std_G.output();
irsanjul 0:fbb75122015f 87 Std_G.write(1);
irsanjul 0:fbb75122015f 88 } else if (warna == merah) {
irsanjul 0:fbb75122015f 89 Std_R.output();
irsanjul 0:fbb75122015f 90 Std_R.write(1);
irsanjul 0:fbb75122015f 91 }
irsanjul 0:fbb75122015f 92 break;
irsanjul 0:fbb75122015f 93 }
irsanjul 0:fbb75122015f 94 }
irsanjul 0:fbb75122015f 95
irsanjul 0:fbb75122015f 96 void Sopir(bool warna, bool nyala) {
irsanjul 0:fbb75122015f 97 switch (nyala) {
irsanjul 0:fbb75122015f 98 case 0:
irsanjul 0:fbb75122015f 99 if (warna == ijo) {
irsanjul 0:fbb75122015f 100 Sopir_R = 0; // led 3
irsanjul 0:fbb75122015f 101 Spr_G.output();
irsanjul 0:fbb75122015f 102 Spr_G.write(0);
irsanjul 0:fbb75122015f 103 Spr_G.input();
irsanjul 0:fbb75122015f 104 Spr_G.mode(PullUp);
irsanjul 0:fbb75122015f 105 } else if (warna == merah) {
irsanjul 0:fbb75122015f 106 Spr_R.output();
irsanjul 0:fbb75122015f 107 Spr_R.write(0);
irsanjul 0:fbb75122015f 108 Spr_R.input();
irsanjul 0:fbb75122015f 109 Spr_R.mode(PullUp);
irsanjul 0:fbb75122015f 110 }
irsanjul 0:fbb75122015f 111 break;
irsanjul 0:fbb75122015f 112 case 1:
irsanjul 0:fbb75122015f 113 if (warna == ijo) {
irsanjul 0:fbb75122015f 114 Sopir_R = 1;
irsanjul 0:fbb75122015f 115 Spr_G.output();
irsanjul 0:fbb75122015f 116 Spr_G.write(1);
irsanjul 0:fbb75122015f 117 } else if (warna == merah) {
irsanjul 0:fbb75122015f 118 Spr_R.output();
irsanjul 0:fbb75122015f 119 Spr_R.write(1);
irsanjul 0:fbb75122015f 120 }
irsanjul 0:fbb75122015f 121 break;
irsanjul 0:fbb75122015f 122 }
irsanjul 0:fbb75122015f 123 }
irsanjul 0:fbb75122015f 124
irsanjul 0:fbb75122015f 125 void eMTy(bool warna, bool nyala) {
irsanjul 0:fbb75122015f 126 switch (nyala) {
irsanjul 0:fbb75122015f 127 case 0:
irsanjul 0:fbb75122015f 128 if (warna == ijo) {
irsanjul 0:fbb75122015f 129 MT_R = 0; // led 4
irsanjul 0:fbb75122015f 130 Mt_G.output();
irsanjul 0:fbb75122015f 131 Mt_G.write(0);
irsanjul 0:fbb75122015f 132 Mt_G.input();
irsanjul 0:fbb75122015f 133 Mt_G.mode(PullUp);
irsanjul 0:fbb75122015f 134 } else if (warna == merah) {
irsanjul 0:fbb75122015f 135 Mt_R.output();
irsanjul 0:fbb75122015f 136 Mt_R.write(0);
irsanjul 0:fbb75122015f 137 Mt_R.input();
irsanjul 0:fbb75122015f 138 Mt_R.mode(PullUp);
irsanjul 0:fbb75122015f 139 }
irsanjul 0:fbb75122015f 140 break;
irsanjul 0:fbb75122015f 141 case 1:
irsanjul 0:fbb75122015f 142 if (warna == ijo) {
irsanjul 0:fbb75122015f 143 MT_R = 1;
irsanjul 0:fbb75122015f 144 Mt_G.output();
irsanjul 0:fbb75122015f 145 Mt_G.write(1);
irsanjul 0:fbb75122015f 146 } else if (warna == merah) {
irsanjul 0:fbb75122015f 147 Mt_R.output();
irsanjul 0:fbb75122015f 148 Mt_R.write(1);
irsanjul 0:fbb75122015f 149 }
irsanjul 0:fbb75122015f 150 break;
irsanjul 0:fbb75122015f 151 }
irsanjul 0:fbb75122015f 152 }
irsanjul 2:e870bcd7e63b 153
irsanjul 2:e870bcd7e63b 154 string open_file(const char *location)
irsanjul 2:e870bcd7e63b 155 {
irsanjul 2:e870bcd7e63b 156 string rtn = "\0";
irsanjul 2:e870bcd7e63b 157
irsanjul 2:e870bcd7e63b 158 // dbg.printf("OPEN FILE %s\r\n", location);
irsanjul 2:e870bcd7e63b 159 ifstream stream(location, std::ifstream::binary);
irsanjul 2:e870bcd7e63b 160
irsanjul 2:e870bcd7e63b 161 if ( !stream.is_open() ) {
irsanjul 2:e870bcd7e63b 162 dbg.printf("File Opening Error\n\r");
irsanjul 2:e870bcd7e63b 163 stream.close();
irsanjul 2:e870bcd7e63b 164 }
irsanjul 2:e870bcd7e63b 165 else
irsanjul 2:e870bcd7e63b 166 {
irsanjul 2:e870bcd7e63b 167 stream.seekg(0,stream.end);
irsanjul 2:e870bcd7e63b 168 int len = stream.tellg();
irsanjul 2:e870bcd7e63b 169 stream.seekg(0,stream.beg);
irsanjul 2:e870bcd7e63b 170
irsanjul 2:e870bcd7e63b 171 char *_stream = new char [len];
irsanjul 2:e870bcd7e63b 172
irsanjul 2:e870bcd7e63b 173 stream.read(_stream,len);
irsanjul 2:e870bcd7e63b 174 _stream[len] = '\0';
irsanjul 2:e870bcd7e63b 175
irsanjul 2:e870bcd7e63b 176 rtn += _stream;
irsanjul 2:e870bcd7e63b 177 stream.close();
irsanjul 2:e870bcd7e63b 178 delete [] _stream;
irsanjul 0:fbb75122015f 179 }
irsanjul 2:e870bcd7e63b 180
irsanjul 2:e870bcd7e63b 181 return rtn;
irsanjul 2:e870bcd7e63b 182 }
irsanjul 2:e870bcd7e63b 183
irsanjul 2:e870bcd7e63b 184 bool mbed_config_init()
irsanjul 2:e870bcd7e63b 185 {
irsanjul 2:e870bcd7e63b 186 dbg.printf("Masuk mbed config init\r\n");
irsanjul 2:e870bcd7e63b 187
irsanjul 2:e870bcd7e63b 188 MbedJSONValue config_json;
irsanjul 2:e870bcd7e63b 189 string dataSet = open_file("/sd/IPCONF.TXT");
irsanjul 2:e870bcd7e63b 190 dbg.printf("isi file :\r\n%s\r\n", dataSet.c_str());
irsanjul 2:e870bcd7e63b 191
irsanjul 2:e870bcd7e63b 192 if(dataSet.size() > 1)
irsanjul 2:e870bcd7e63b 193 {
irsanjul 2:e870bcd7e63b 194 string err;
irsanjul 2:e870bcd7e63b 195 parse(config_json, dataSet.c_str(), dataSet.c_str() + strlen(dataSet.c_str()), &err);
irsanjul 2:e870bcd7e63b 196 if(err.size() > 0)
irsanjul 2:e870bcd7e63b 197 {
irsanjul 2:e870bcd7e63b 198 dbg.printf("res error? %s\r\n", err.c_str());
irsanjul 2:e870bcd7e63b 199 return false;
irsanjul 2:e870bcd7e63b 200 }
irsanjul 2:e870bcd7e63b 201 else
irsanjul 2:e870bcd7e63b 202 {
irsanjul 2:e870bcd7e63b 203 const char *ip_temp = config_json["IP"].get<string>().c_str();
irsanjul 2:e870bcd7e63b 204 const char *sub_temp = config_json["SUBNET"].get<string>().c_str();
irsanjul 2:e870bcd7e63b 205 const char *gate_temp = config_json["GATEWAY"].get<string>().c_str();
irsanjul 2:e870bcd7e63b 206 const char *mcast_temp = config_json["MCAST"].get<string>().c_str();
irsanjul 2:e870bcd7e63b 207 const char *idx_temp = config_json["IDX"].get<string>().c_str();
irsanjul 2:e870bcd7e63b 208 PortListen = config_json["PortListen"].get<int>();
irsanjul 2:e870bcd7e63b 209 PortSend = config_json["PortSend"].get<int>();
irsanjul 2:e870bcd7e63b 210 PortHeartB = config_json["PortHeartBit"].get<int>();
irsanjul 2:e870bcd7e63b 211 BAUD = config_json["BAUD"].get<int>();
irsanjul 2:e870bcd7e63b 212
irsanjul 2:e870bcd7e63b 213 sprintf(IP,"%s", ip_temp);
irsanjul 2:e870bcd7e63b 214 sprintf(SUBNET, "%s", sub_temp);
irsanjul 2:e870bcd7e63b 215 sprintf(GATEWAY, "%s", gate_temp);
irsanjul 2:e870bcd7e63b 216 sprintf(MCAST, "%s", mcast_temp);
irsanjul 2:e870bcd7e63b 217 sprintf(IDX, "%s", idx_temp);
irsanjul 2:e870bcd7e63b 218
irsanjul 2:e870bcd7e63b 219 dbg.printf("IP Device = %s\r\n", IP);
irsanjul 2:e870bcd7e63b 220 dbg.printf("Subnet = %s\r\n", SUBNET);
irsanjul 2:e870bcd7e63b 221 dbg.printf("Gateway = %s\r\n", GATEWAY);
irsanjul 2:e870bcd7e63b 222 dbg.printf("Multicast IP = %s\r\n", MCAST);
irsanjul 2:e870bcd7e63b 223 dbg.printf("Server to mBed = %d\r\n", PortListen);
irsanjul 2:e870bcd7e63b 224 dbg.printf("mBed to Multicast = %d\r\n", PortSend);
irsanjul 2:e870bcd7e63b 225 dbg.printf("HeartBeat Port = %d\r\n", PortHeartB);
irsanjul 2:e870bcd7e63b 226 dbg.printf("device IDX = %s\r\n", IDX);
irsanjul 2:e870bcd7e63b 227 dbg.printf("Serial Baudrate = %d\r\n", BAUD);
irsanjul 2:e870bcd7e63b 228
irsanjul 2:e870bcd7e63b 229 return true;
irsanjul 0:fbb75122015f 230 }
irsanjul 2:e870bcd7e63b 231 }
irsanjul 2:e870bcd7e63b 232 else
irsanjul 2:e870bcd7e63b 233 {
irsanjul 2:e870bcd7e63b 234 dbg.printf("Config is not found\r\n");
irsanjul 2:e870bcd7e63b 235 return false;
irsanjul 2:e870bcd7e63b 236 }
irsanjul 0:fbb75122015f 237 }
irsanjul 0:fbb75122015f 238
irsanjul 0:fbb75122015f 239 unsigned char reset(void) {
irsanjul 0:fbb75122015f 240 for (idx = 0; idx < 8; idx++) {
irsanjul 0:fbb75122015f 241 ID[idx] = 0;
irsanjul 0:fbb75122015f 242 }
irsanjul 0:fbb75122015f 243 ix = 0;
irsanjul 0:fbb75122015f 244 iBtn.output();
irsanjul 0:fbb75122015f 245 iBtn.write(0);
irsanjul 0:fbb75122015f 246 wait_us(480);
irsanjul 0:fbb75122015f 247 iBtn.write(1);
irsanjul 0:fbb75122015f 248 iBtn.mode(PullUp);
irsanjul 0:fbb75122015f 249 iBtn.input();
irsanjul 0:fbb75122015f 250
irsanjul 0:fbb75122015f 251 for (int i = 0; i < 180; i++) {
irsanjul 0:fbb75122015f 252 wait_us(1);
irsanjul 0:fbb75122015f 253 if (iBtn == 0) {
irsanjul 0:fbb75122015f 254 ix = 1;
irsanjul 0:fbb75122015f 255 }
irsanjul 0:fbb75122015f 256 }
irsanjul 0:fbb75122015f 257 wait_us(1);
irsanjul 0:fbb75122015f 258 if (ix == 0) {
irsanjul 0:fbb75122015f 259 return 0;
irsanjul 0:fbb75122015f 260 } else
irsanjul 0:fbb75122015f 261 return 1;
irsanjul 0:fbb75122015f 262 }
irsanjul 0:fbb75122015f 263
irsanjul 0:fbb75122015f 264 int write() {
irsanjul 0:fbb75122015f 265 iBtn.output();
irsanjul 0:fbb75122015f 266 iBtn.write(1);
irsanjul 0:fbb75122015f 267 for (idx = 0; idx < 8; idx++) {
irsanjul 0:fbb75122015f 268 for (int i = 0; i < 35; i++) {
irsanjul 0:fbb75122015f 269 wait_us(1);
irsanjul 0:fbb75122015f 270 if (i >= 2) {
irsanjul 0:fbb75122015f 271 iBtn.write((id_addr >> idx) & 1);
irsanjul 0:fbb75122015f 272 } else
irsanjul 0:fbb75122015f 273 iBtn.write(0);
irsanjul 0:fbb75122015f 274 }
irsanjul 0:fbb75122015f 275 iBtn.write(1);
irsanjul 0:fbb75122015f 276 }
irsanjul 0:fbb75122015f 277 wait_us(2);
irsanjul 0:fbb75122015f 278 return 0;
irsanjul 0:fbb75122015f 279 }
irsanjul 0:fbb75122015f 280
irsanjul 0:fbb75122015f 281 int read() {
irsanjul 0:fbb75122015f 282 iBtn.output();
irsanjul 0:fbb75122015f 283 iBtn.write(1);
irsanjul 0:fbb75122015f 284 for (idx = 0; idx < 8; idx++) {
irsanjul 0:fbb75122015f 285 for (idy = 0; idy < 8; idy++) {
irsanjul 0:fbb75122015f 286 width = 0;
irsanjul 0:fbb75122015f 287 iBtn.output();
irsanjul 0:fbb75122015f 288 iBtn.write(0);
irsanjul 0:fbb75122015f 289 wait_us(1);
irsanjul 0:fbb75122015f 290 iBtn.input();
irsanjul 0:fbb75122015f 291 for (int i = 0; i < 35; i++) {
irsanjul 0:fbb75122015f 292 wait_us(1);
irsanjul 0:fbb75122015f 293 if (iBtn.read()) {
irsanjul 0:fbb75122015f 294 width++;
irsanjul 0:fbb75122015f 295 }
irsanjul 0:fbb75122015f 296 }
irsanjul 0:fbb75122015f 297 if (width > 25) {
irsanjul 0:fbb75122015f 298 ID[idx] |= (1 << idy);
irsanjul 0:fbb75122015f 299 }
irsanjul 0:fbb75122015f 300 }
irsanjul 0:fbb75122015f 301 }
irsanjul 0:fbb75122015f 302
irsanjul 0:fbb75122015f 303 for (idx = 0; idx < 8; idx++) {
irsanjul 2:e870bcd7e63b 304 text[((7 - idx) * 2) + 7] = _hex[ID[idx] & 0x0f];
irsanjul 2:e870bcd7e63b 305 text[((7 - idx) * 2) + 6] = _hex[(ID[idx] >> 4) & 0x0f];
irsanjul 0:fbb75122015f 306 }
irsanjul 2:e870bcd7e63b 307 string str;
irsanjul 2:e870bcd7e63b 308 size_t found1;
irsanjul 0:fbb75122015f 309 str += text;
irsanjul 0:fbb75122015f 310
irsanjul 0:fbb75122015f 311 found1 = str.find("FFFFFFFFFF");
irsanjul 0:fbb75122015f 312 if(found1 == std::string::npos)
irsanjul 0:fbb75122015f 313 {
irsanjul 0:fbb75122015f 314 found1 = str.find("000000000000");
irsanjul 0:fbb75122015f 315 if(found1 == std::string::npos)
irsanjul 0:fbb75122015f 316 {
irsanjul 0:fbb75122015f 317 dbg.printf(text);
irsanjul 0:fbb75122015f 318 dbg.printf("\r\n");
irsanjul 0:fbb75122015f 319 }
irsanjul 0:fbb75122015f 320 }
irsanjul 0:fbb75122015f 321 return 0;
irsanjul 0:fbb75122015f 322 }
irsanjul 0:fbb75122015f 323
irsanjul 0:fbb75122015f 324 int cmpstr(const char *str, const char *sub) {
irsanjul 0:fbb75122015f 325 int length = strlen(sub);
irsanjul 0:fbb75122015f 326 if (length == 0)
irsanjul 0:fbb75122015f 327 return 0;
irsanjul 0:fbb75122015f 328 int count = 0;
irsanjul 0:fbb75122015f 329 for (str = strstr(str, sub); str; str = strstr(str + length, sub))
irsanjul 0:fbb75122015f 330 ++count;
irsanjul 0:fbb75122015f 331 return count;
irsanjul 0:fbb75122015f 332 }
irsanjul 0:fbb75122015f 333
irsanjul 0:fbb75122015f 334 void Hartbit(unsigned char std) {
irsanjul 0:fbb75122015f 335 char hb_buff[20], hb_num[10];
irsanjul 0:fbb75122015f 336 static int hb;
irsanjul 0:fbb75122015f 337 hb_buff[0] = IDX[0];
irsanjul 0:fbb75122015f 338 hb_buff[1] = IDX[1];
irsanjul 0:fbb75122015f 339 hb_buff[2] = IDX[2];
irsanjul 0:fbb75122015f 340 hb_buff[3] = IDX[3];
irsanjul 0:fbb75122015f 341
irsanjul 2:e870bcd7e63b 342 multi.set_address(MCAST, PortHeartB);
irsanjul 0:fbb75122015f 343 hb++;
irsanjul 0:fbb75122015f 344
irsanjul 0:fbb75122015f 345 switch (std) {
irsanjul 0:fbb75122015f 346 case 0:
irsanjul 0:fbb75122015f 347 //Standby(0, 1);
irsanjul 0:fbb75122015f 348 if (hb < 375) {
irsanjul 0:fbb75122015f 349 Sopir(0, 1);
irsanjul 0:fbb75122015f 350 } else if ((hb >= 375) && (hb < 750)) {
irsanjul 0:fbb75122015f 351 Sopir(0, 0);
irsanjul 0:fbb75122015f 352 } else if ((hb >= 750) && (hb < 1125)) {
irsanjul 0:fbb75122015f 353 Sopir(0, 1);
irsanjul 0:fbb75122015f 354 } else if ((hb >= 1125) && (hb < 1500))
irsanjul 0:fbb75122015f 355 Sopir(0, 0);
irsanjul 0:fbb75122015f 356 if (hb >= 1500) {
irsanjul 0:fbb75122015f 357 sprintf(hb_num, "%d", TICK);
irsanjul 0:fbb75122015f 358 strcat(hb_buff, hb_num);
irsanjul 0:fbb75122015f 359 sock.sendTo(multi, hb_buff, sizeof(hb_buff));
irsanjul 0:fbb75122015f 360 hb = 0;
irsanjul 0:fbb75122015f 361 TICK++;
irsanjul 0:fbb75122015f 362 }
irsanjul 0:fbb75122015f 363 break;
irsanjul 0:fbb75122015f 364 case 1:
irsanjul 0:fbb75122015f 365 Standby(0, 0);
irsanjul 0:fbb75122015f 366 Standby(0, 1);
irsanjul 0:fbb75122015f 367 if (hb < 750) {
irsanjul 0:fbb75122015f 368 Standby(0, 1);
irsanjul 0:fbb75122015f 369 } else if ((hb >= 750) && (hb < 1500)) {
irsanjul 0:fbb75122015f 370 Standby(0, 0);
irsanjul 0:fbb75122015f 371 } else if ((hb >= 1500) && (hb < 2250)) {
irsanjul 0:fbb75122015f 372 Standby(0, 1);
irsanjul 0:fbb75122015f 373 } else if ((hb >= 2250) && (hb < 3000))
irsanjul 0:fbb75122015f 374 Standby(0, 0);
irsanjul 0:fbb75122015f 375 if (hb >= 3000) {
irsanjul 0:fbb75122015f 376 sprintf(hb_num, "%d", TICK);
irsanjul 0:fbb75122015f 377 strcat(hb_buff, hb_num);
irsanjul 0:fbb75122015f 378 sock.sendTo(multi, hb_buff, sizeof(hb_buff));
irsanjul 0:fbb75122015f 379 hb = 0;
irsanjul 0:fbb75122015f 380 TICK++;
irsanjul 0:fbb75122015f 381 }
irsanjul 0:fbb75122015f 382
irsanjul 0:fbb75122015f 383 break;
irsanjul 0:fbb75122015f 384 case 2:
irsanjul 0:fbb75122015f 385 Standby(0, 1);
irsanjul 0:fbb75122015f 386 if (hb >= 7000) {
irsanjul 0:fbb75122015f 387 sprintf(hb_num, "%d", TICK);
irsanjul 0:fbb75122015f 388 strcat(hb_buff, hb_num);
irsanjul 0:fbb75122015f 389 sock.sendTo(multi, hb_buff, sizeof(hb_buff));
irsanjul 0:fbb75122015f 390 hb = 0;
irsanjul 0:fbb75122015f 391 TICK++;
irsanjul 0:fbb75122015f 392 }
irsanjul 0:fbb75122015f 393 break;
irsanjul 0:fbb75122015f 394 }
irsanjul 0:fbb75122015f 395 }
irsanjul 0:fbb75122015f 396
irsanjul 0:fbb75122015f 397 int openForce() {
irsanjul 0:fbb75122015f 398 int n = sock.receiveFrom(server, rx_buff, sizeof(rx_buff));
irsanjul 0:fbb75122015f 399
irsanjul 0:fbb75122015f 400 if (n != 0) {
irsanjul 0:fbb75122015f 401 if ((rx_buff[1] == 'V') && (rx_buff[3] == '5')) {
irsanjul 0:fbb75122015f 402 eMTy(0, 0);
irsanjul 0:fbb75122015f 403 Sopir(0, 0);
irsanjul 0:fbb75122015f 404 wait(1);
irsanjul 0:fbb75122015f 405 Gate = 1; //BYPASS
irsanjul 0:fbb75122015f 406 wait_ms(1500); //BYPASS
irsanjul 0:fbb75122015f 407 Gate = 0; //BYPASS
irsanjul 0:fbb75122015f 408 sprmt = 0;
irsanjul 0:fbb75122015f 409 tx_buff[4] = 'P';
irsanjul 0:fbb75122015f 410 tx_buff[5] = '0';
irsanjul 0:fbb75122015f 411 tx_buff[6] = '0';
irsanjul 2:e870bcd7e63b 412 multi.set_address(MCAST, PortSend);
irsanjul 0:fbb75122015f 413 sock.sendTo(multi, tx_buff, sizeof(tx_buff));
irsanjul 0:fbb75122015f 414 } else if (rx_buff[1] == 'R') {
irsanjul 0:fbb75122015f 415 tx_buff[4] = 'P';
irsanjul 0:fbb75122015f 416 tx_buff[5] = '0';
irsanjul 0:fbb75122015f 417 tx_buff[6] = '0';
irsanjul 0:fbb75122015f 418 sprmt = 0;
irsanjul 2:e870bcd7e63b 419 multi.set_address(MCAST, PortSend);
irsanjul 0:fbb75122015f 420 sock.sendTo(multi, tx_buff, sizeof(tx_buff));
irsanjul 0:fbb75122015f 421 eMTy(0, 0);
irsanjul 0:fbb75122015f 422 Sopir(0, 0);
irsanjul 0:fbb75122015f 423 Gate = 0;
irsanjul 0:fbb75122015f 424 }
irsanjul 0:fbb75122015f 425 } else {
irsanjul 0:fbb75122015f 426 return 0;
irsanjul 0:fbb75122015f 427 }
irsanjul 0:fbb75122015f 428 return 0;
irsanjul 0:fbb75122015f 429 }
irsanjul 0:fbb75122015f 430
irsanjul 0:fbb75122015f 431 int set_IP() {
irsanjul 0:fbb75122015f 432 char ptr_data;
irsanjul 0:fbb75122015f 433 //server.set_address(SERVER,ER_SEND_PORT);
irsanjul 0:fbb75122015f 434 //char print_rx_buff[128];
irsanjul 2:e870bcd7e63b 435 // char conf_buff[1024] = { 0 }, print_init[20] = { 0x1b, 0x40, 0x1b, 0x54,
irsanjul 2:e870bcd7e63b 436 // 0x1b/*,0x57*/, 0x00, 0x1b, 0x77, 0x00, 0x12, 0x1b, 0x43, 0x00, 0x06,
irsanjul 2:e870bcd7e63b 437 // 0x1b, 0x6c, 0x01, 0x12 };
irsanjul 2:e870bcd7e63b 438 char conf_buff[1024] = { 0 };
irsanjul 0:fbb75122015f 439 int n = ip_conf.receiveFrom(server, conf_buff, sizeof(conf_buff));
irsanjul 0:fbb75122015f 440 if (n >= 0) {
irsanjul 0:fbb75122015f 441 //printf("Packet from \"%s\": %s\n", server.get_address(), conf_buff);
irsanjul 0:fbb75122015f 442 if (conf_buff[0] == '^') {
irsanjul 0:fbb75122015f 443 if (conf_buff[1] == 'R') {
irsanjul 0:fbb75122015f 444 Reset = 0;
irsanjul 0:fbb75122015f 445 } else if (conf_buff[1] == 'S') {
irsanjul 0:fbb75122015f 446 Sleep = 1;
irsanjul 0:fbb75122015f 447 Gate = 0;
irsanjul 0:fbb75122015f 448
irsanjul 0:fbb75122015f 449 int stop = 0;
irsanjul 0:fbb75122015f 450 while(stop != 1)
irsanjul 0:fbb75122015f 451 {
irsanjul 0:fbb75122015f 452 Spr_G.input();
irsanjul 0:fbb75122015f 453 Spr_G.mode(PullUp);
irsanjul 0:fbb75122015f 454
irsanjul 0:fbb75122015f 455 Mt_G.input();
irsanjul 0:fbb75122015f 456 Mt_G.mode(PullUp);
irsanjul 0:fbb75122015f 457
irsanjul 0:fbb75122015f 458 Std_G.input();
irsanjul 0:fbb75122015f 459 Std_G.mode(PullUp);
irsanjul 0:fbb75122015f 460
irsanjul 0:fbb75122015f 461 ip_conf.receiveFrom(server, conf_buff, sizeof(conf_buff));
irsanjul 0:fbb75122015f 462
irsanjul 0:fbb75122015f 463 if (conf_buff[0] == '^')
irsanjul 0:fbb75122015f 464 {
irsanjul 0:fbb75122015f 465 if (conf_buff[1] == 'W')
irsanjul 0:fbb75122015f 466 {
irsanjul 0:fbb75122015f 467 stop = 1;
irsanjul 0:fbb75122015f 468 Sleep = 0;
irsanjul 0:fbb75122015f 469 }
irsanjul 0:fbb75122015f 470 else if (conf_buff[1] == 'R')
irsanjul 0:fbb75122015f 471 {
irsanjul 0:fbb75122015f 472 stop = 0;
irsanjul 0:fbb75122015f 473 }
irsanjul 0:fbb75122015f 474 else if (conf_buff[1] == 'S')
irsanjul 0:fbb75122015f 475 {
irsanjul 0:fbb75122015f 476 stop = 0;
irsanjul 0:fbb75122015f 477 }
irsanjul 0:fbb75122015f 478 else stop = 0;
irsanjul 0:fbb75122015f 479 }
irsanjul 0:fbb75122015f 480 else if (conf_buff[0] == '2') stop = 0;
irsanjul 0:fbb75122015f 481
irsanjul 0:fbb75122015f 482 else stop = 0;
irsanjul 0:fbb75122015f 483 }
irsanjul 0:fbb75122015f 484 //sock.close(true);
irsanjul 0:fbb75122015f 485 } else if (conf_buff[1] == 'W') {
irsanjul 0:fbb75122015f 486 Sleep = 0;
irsanjul 2:e870bcd7e63b 487 //sock.bind(PortListen);
irsanjul 0:fbb75122015f 488 }
irsanjul 0:fbb75122015f 489 } else if (conf_buff[0] == 0x0f) {
irsanjul 2:e870bcd7e63b 490 //dbg.printf("%s", print_init);
irsanjul 0:fbb75122015f 491 pc.printf("%s", conf_buff);
irsanjul 0:fbb75122015f 492 ptr_data = *strchr(conf_buff, 0x1d);
irsanjul 0:fbb75122015f 493 if (ptr_data != NULL) {
irsanjul 0:fbb75122015f 494 tx_buff[4] = 'D';
irsanjul 0:fbb75122015f 495 tx_buff[5] = '0';
irsanjul 0:fbb75122015f 496 tx_buff[6] = '1';
irsanjul 2:e870bcd7e63b 497 multi.set_address(MCAST, PortSend);
irsanjul 0:fbb75122015f 498 sock.sendTo(multi, tx_buff, sizeof(tx_buff));
irsanjul 0:fbb75122015f 499 dbg.printf("Printer Done\r\n");
irsanjul 0:fbb75122015f 500 }
irsanjul 0:fbb75122015f 501 } else
irsanjul 0:fbb75122015f 502 return 0;
irsanjul 0:fbb75122015f 503 } else {
irsanjul 0:fbb75122015f 504 return 0;
irsanjul 0:fbb75122015f 505 }
irsanjul 0:fbb75122015f 506 return 0;
irsanjul 0:fbb75122015f 507 }
irsanjul 0:fbb75122015f 508
irsanjul 0:fbb75122015f 509 void flush(void)
irsanjul 0:fbb75122015f 510 {
irsanjul 0:fbb75122015f 511 int chk;
irsanjul 0:fbb75122015f 512 do
irsanjul 0:fbb75122015f 513 {
irsanjul 0:fbb75122015f 514 char flush_buff[1024] = { 0 };
irsanjul 0:fbb75122015f 515 chk = ip_conf.receiveFrom(server, flush_buff, sizeof(flush_buff));
irsanjul 0:fbb75122015f 516 //clear flush_buff
irsanjul 0:fbb75122015f 517 for(int i = 0; i <sizeof(flush_buff); i++)
irsanjul 0:fbb75122015f 518 {
irsanjul 0:fbb75122015f 519 flush_buff[i] = '\0';
irsanjul 0:fbb75122015f 520 }
irsanjul 0:fbb75122015f 521 }while (chk > 0);
irsanjul 0:fbb75122015f 522 }
irsanjul 0:fbb75122015f 523
irsanjul 0:fbb75122015f 524 void Set_IP_Manual()
irsanjul 0:fbb75122015f 525 {
irsanjul 2:e870bcd7e63b 526 sprintf(IP,"192.168.0.101");
irsanjul 0:fbb75122015f 527 sprintf(SUBNET, "255.255.255.0");
irsanjul 0:fbb75122015f 528 sprintf(GATEWAY, "192.168.0.1");
irsanjul 0:fbb75122015f 529 sprintf(MCAST, "224.1.1.8");
irsanjul 2:e870bcd7e63b 530 PortListen = 50007;
irsanjul 2:e870bcd7e63b 531 PortSend = 50001;
irsanjul 2:e870bcd7e63b 532 PortHeartB = 50003;
irsanjul 2:e870bcd7e63b 533 sprintf(IDX, "GO01");
irsanjul 2:e870bcd7e63b 534 BAUD = 38400;
irsanjul 0:fbb75122015f 535
irsanjul 0:fbb75122015f 536 dbg.printf("IP Device = %s\r\n", IP);
irsanjul 0:fbb75122015f 537 dbg.printf("Subnet = %s\r\n", SUBNET);
irsanjul 0:fbb75122015f 538 dbg.printf("Gateway = %s\r\n", GATEWAY);
irsanjul 0:fbb75122015f 539 dbg.printf("Multicast IP = %s\r\n", MCAST);
irsanjul 0:fbb75122015f 540 dbg.printf("Server to mBed = %s\r\n", PortListen);
irsanjul 0:fbb75122015f 541 dbg.printf("mBed to Multicast = %s\r\n", PortSend);
irsanjul 0:fbb75122015f 542 dbg.printf("HeartBeat Port = %s\r\n", PortHeartB);
irsanjul 0:fbb75122015f 543 dbg.printf("device IDX = %s\r\n", IDX);
irsanjul 0:fbb75122015f 544 }
irsanjul 0:fbb75122015f 545
irsanjul 0:fbb75122015f 546 int main(void) {
irsanjul 0:fbb75122015f 547 mkdir("/sd/", 0777);
irsanjul 0:fbb75122015f 548
irsanjul 2:e870bcd7e63b 549 bool card_ready = mbed_config_init(); // Digunakan jika setting ip melalui micro sd
irsanjul 2:e870bcd7e63b 550 if(!card_ready)
irsanjul 2:e870bcd7e63b 551 {
irsanjul 2:e870bcd7e63b 552 dbg.printf("Set Config via hard code\r\n");
irsanjul 2:e870bcd7e63b 553 Set_IP_Manual(); // Digunakan jika setting ip secara manual
irsanjul 2:e870bcd7e63b 554 }
irsanjul 0:fbb75122015f 555
irsanjul 2:e870bcd7e63b 556 dbg.printf("Printer Baud = %d\r\n",BAUD);
irsanjul 0:fbb75122015f 557 pc.baud(BAUD);
irsanjul 2:e870bcd7e63b 558 dbg.baud(9600);
irsanjul 0:fbb75122015f 559 dbg.printf("System Start \r\n");
irsanjul 0:fbb75122015f 560
irsanjul 0:fbb75122015f 561 EthernetInterface eth;
irsanjul 0:fbb75122015f 562 eth.init(IP, SUBNET, GATEWAY);
irsanjul 0:fbb75122015f 563 int n = eth.connect();
irsanjul 0:fbb75122015f 564 if (!n) {
irsanjul 0:fbb75122015f 565 dbg.printf("Ethernet is not connect");
irsanjul 0:fbb75122015f 566 } else
irsanjul 0:fbb75122015f 567 dbg.printf("Ethernet is connect");
irsanjul 0:fbb75122015f 568
irsanjul 0:fbb75122015f 569 ip_conf.bind(IP_CONF_PORT);
irsanjul 0:fbb75122015f 570 ip_conf.set_blocking(false, 0);
irsanjul 0:fbb75122015f 571 server.set_address(MCAST, 50002);
irsanjul 0:fbb75122015f 572
irsanjul 2:e870bcd7e63b 573 sock.bind(PortListen);
irsanjul 0:fbb75122015f 574
irsanjul 0:fbb75122015f 575 sock.set_blocking(false, 0);
irsanjul 0:fbb75122015f 576
irsanjul 0:fbb75122015f 577 text[0] = 2;
irsanjul 0:fbb75122015f 578 text[1] = IDX[0];
irsanjul 0:fbb75122015f 579 text[2] = IDX[1];
irsanjul 0:fbb75122015f 580 text[3] = IDX[2];
irsanjul 0:fbb75122015f 581 text[4] = IDX[3];
irsanjul 0:fbb75122015f 582 text[22] = '0';
irsanjul 0:fbb75122015f 583 text[23] = '0';
irsanjul 0:fbb75122015f 584 text[24] = 3;
irsanjul 0:fbb75122015f 585 unsigned char tmp, sndrcv = 0, tmpx = 0;
irsanjul 0:fbb75122015f 586 int timeout = 0;
irsanjul 0:fbb75122015f 587
irsanjul 0:fbb75122015f 588 dbg.printf("Device Ready\r\n");
irsanjul 0:fbb75122015f 589
irsanjul 0:fbb75122015f 590 tx_buff[0] = IDX[0];
irsanjul 0:fbb75122015f 591 tx_buff[1] = IDX[1];
irsanjul 0:fbb75122015f 592 tx_buff[2] = IDX[2];
irsanjul 0:fbb75122015f 593 tx_buff[3] = IDX[3];
irsanjul 0:fbb75122015f 594 tx_buff[4] = 'R';
irsanjul 0:fbb75122015f 595 tx_buff[5] = '0';
irsanjul 0:fbb75122015f 596
irsanjul 2:e870bcd7e63b 597 multi.set_address(MCAST, PortSend);
irsanjul 0:fbb75122015f 598 sock.sendTo(multi, tx_buff, sizeof(tx_buff));
irsanjul 0:fbb75122015f 599
irsanjul 0:fbb75122015f 600 eMTy(ijo, 0);
irsanjul 0:fbb75122015f 601 eMTy(merah, 0);
irsanjul 0:fbb75122015f 602 Sopir(ijo, 0);
irsanjul 0:fbb75122015f 603 Sopir(merah, 0);
irsanjul 0:fbb75122015f 604 Standby(ijo, 0);
irsanjul 0:fbb75122015f 605 Standby(merah, 0);
irsanjul 0:fbb75122015f 606 Res_R = 1;
irsanjul 0:fbb75122015f 607
irsanjul 0:fbb75122015f 608 flush(); // clear ethernet port
irsanjul 0:fbb75122015f 609
irsanjul 0:fbb75122015f 610 while (true) {
irsanjul 0:fbb75122015f 611 for (idx = 0; idx < 6; idx++) {
irsanjul 0:fbb75122015f 612 rx_buff[idx] = 0;
irsanjul 0:fbb75122015f 613 }
irsanjul 0:fbb75122015f 614
irsanjul 0:fbb75122015f 615 switch (sndrcv) {
irsanjul 0:fbb75122015f 616 case 0: {
irsanjul 0:fbb75122015f 617 tmp = reset();
irsanjul 0:fbb75122015f 618
irsanjul 0:fbb75122015f 619 if (tmp == 1) {
irsanjul 0:fbb75122015f 620 if (tmpx == 0) {
irsanjul 0:fbb75122015f 621 if (sprmt == 0) {
irsanjul 0:fbb75122015f 622 Sopir(0, 1);
irsanjul 0:fbb75122015f 623 } else {
irsanjul 0:fbb75122015f 624 eMTy(0, 1);
irsanjul 0:fbb75122015f 625 }
irsanjul 0:fbb75122015f 626 wait_ms(70);
irsanjul 0:fbb75122015f 627 reset();
irsanjul 0:fbb75122015f 628 write();
irsanjul 0:fbb75122015f 629 read();
irsanjul 0:fbb75122015f 630 if (sprmt == 0) {
irsanjul 0:fbb75122015f 631 Sopir(0, 0);
irsanjul 0:fbb75122015f 632 text[5] = 'S';
irsanjul 0:fbb75122015f 633 } else {
irsanjul 0:fbb75122015f 634 eMTy(0, 0);
irsanjul 0:fbb75122015f 635 text[5] = 'M';
irsanjul 0:fbb75122015f 636 }
irsanjul 0:fbb75122015f 637 if (cmpstr(text, "F") < 10) {
irsanjul 2:e870bcd7e63b 638 multi.set_address(MCAST, PortSend);
irsanjul 0:fbb75122015f 639 sock.sendTo(multi, text, sizeof(text));
irsanjul 0:fbb75122015f 640 sndrcv = 1;
irsanjul 0:fbb75122015f 641 }
irsanjul 0:fbb75122015f 642 }
irsanjul 0:fbb75122015f 643 }
irsanjul 0:fbb75122015f 644
irsanjul 0:fbb75122015f 645 if (sprmt == 0) {
irsanjul 0:fbb75122015f 646 if (sndrcv == 1) {
irsanjul 0:fbb75122015f 647 Hartbit(2);
irsanjul 0:fbb75122015f 648 } else
irsanjul 0:fbb75122015f 649 Hartbit(1);
irsanjul 0:fbb75122015f 650 } else if (sprmt == 1)
irsanjul 0:fbb75122015f 651 Hartbit(0);
irsanjul 0:fbb75122015f 652
irsanjul 0:fbb75122015f 653 tmpx = tmp;
irsanjul 0:fbb75122015f 654 openForce();
irsanjul 0:fbb75122015f 655 break;
irsanjul 0:fbb75122015f 656 }
irsanjul 0:fbb75122015f 657 case 1: {
irsanjul 2:e870bcd7e63b 658 sock.bind(PortListen);
irsanjul 0:fbb75122015f 659
irsanjul 0:fbb75122015f 660 int n = sock.receiveFrom(server, rx_buff, sizeof(rx_buff));
irsanjul 0:fbb75122015f 661 if (n != 0) {
irsanjul 0:fbb75122015f 662 dbg.printf("Packet from \"%s\": %s\n", server.get_address(),
irsanjul 0:fbb75122015f 663 rx_buff);
irsanjul 0:fbb75122015f 664 if ((rx_buff[1] == 'V') && (rx_buff[3] == '3')) {
irsanjul 0:fbb75122015f 665 sndrcv = 0;
irsanjul 0:fbb75122015f 666 Sopir(0, 1);
irsanjul 0:fbb75122015f 667 sprmt = 1;
irsanjul 0:fbb75122015f 668 tx_buff[4] = 'O';
irsanjul 0:fbb75122015f 669 tx_buff[5] = 'K';
irsanjul 0:fbb75122015f 670 tx_buff[6] = '!';
irsanjul 2:e870bcd7e63b 671 multi.set_address(MCAST, PortSend);
irsanjul 0:fbb75122015f 672 sock.sendTo(multi, tx_buff, sizeof(tx_buff));
irsanjul 0:fbb75122015f 673 dbg.printf("Data S Valid..\r\n");
irsanjul 0:fbb75122015f 674 } else if ((rx_buff[1] == 'A') && (rx_buff[3] == '3')) {
irsanjul 0:fbb75122015f 675 sndrcv = 0;
irsanjul 0:fbb75122015f 676 Sopir(0, 0);
irsanjul 0:fbb75122015f 677 eMTy(0, 1);
irsanjul 0:fbb75122015f 678 wait_ms(200);
irsanjul 0:fbb75122015f 679 eMTy(0, 0);
irsanjul 0:fbb75122015f 680 sprmt = 0;
irsanjul 0:fbb75122015f 681 tx_buff[4] = 'O';
irsanjul 0:fbb75122015f 682 tx_buff[5] = 'K';
irsanjul 0:fbb75122015f 683 tx_buff[6] = '!';
irsanjul 2:e870bcd7e63b 684 multi.set_address(MCAST, PortSend);
irsanjul 0:fbb75122015f 685 sock.sendTo(multi, tx_buff, sizeof(tx_buff));
irsanjul 0:fbb75122015f 686 dbg.printf("Data S Not Valid, but M valid, reset!!!!\r\n");
irsanjul 0:fbb75122015f 687 } else if ((rx_buff[1] == 'V') && (rx_buff[3] == '4')) {
irsanjul 0:fbb75122015f 688 Sopir(0, 1);
irsanjul 0:fbb75122015f 689 eMTy(0, 1);
irsanjul 0:fbb75122015f 690 wait_ms(500);
irsanjul 0:fbb75122015f 691 /*
irsanjul 0:fbb75122015f 692 Lakukan perubahan disini menyangkut dengan:
irsanjul 0:fbb75122015f 693 - delay lebih lama
irsanjul 0:fbb75122015f 694 - sprmt yang ditambah
irsanjul 0:fbb75122015f 695 */
irsanjul 0:fbb75122015f 696 tx_buff[4] = 'O';
irsanjul 0:fbb75122015f 697 tx_buff[5] = 'K';
irsanjul 0:fbb75122015f 698 tx_buff[6] = '!';
irsanjul 2:e870bcd7e63b 699 multi.set_address(MCAST, PortSend);
irsanjul 0:fbb75122015f 700 sock.sendTo(multi, tx_buff, sizeof(tx_buff));
irsanjul 0:fbb75122015f 701 dbg.printf("Data M Valid..\r\n");
irsanjul 0:fbb75122015f 702 } else if ((rx_buff[1] == 'A') && (rx_buff[3] == '4')) {
irsanjul 0:fbb75122015f 703 sndrcv = 0;
irsanjul 0:fbb75122015f 704 if (sprmt == 0) {
irsanjul 0:fbb75122015f 705 Sopir(0, 0);
irsanjul 0:fbb75122015f 706 } else {
irsanjul 0:fbb75122015f 707 Sopir(0, 1);
irsanjul 0:fbb75122015f 708 }
irsanjul 0:fbb75122015f 709 eMTy(0, 0);
irsanjul 0:fbb75122015f 710 tx_buff[4] = 'O';
irsanjul 0:fbb75122015f 711 tx_buff[5] = 'K';
irsanjul 0:fbb75122015f 712 tx_buff[6] = '!';
irsanjul 2:e870bcd7e63b 713 multi.set_address(MCAST, PortSend);
irsanjul 0:fbb75122015f 714 sock.sendTo(multi, tx_buff, sizeof(tx_buff));
irsanjul 0:fbb75122015f 715 dbg.printf("Data M Not Valid, refresh!!!!\r\n");
irsanjul 0:fbb75122015f 716 } else if (rx_buff[1] == 'R') {
irsanjul 0:fbb75122015f 717 sndrcv = 0;
irsanjul 0:fbb75122015f 718 Sopir(0, 0);
irsanjul 0:fbb75122015f 719 eMTy(0, 0);
irsanjul 0:fbb75122015f 720 sprmt = 0;
irsanjul 0:fbb75122015f 721 tx_buff[4] = 'O';
irsanjul 0:fbb75122015f 722 tx_buff[5] = 'K';
irsanjul 0:fbb75122015f 723 tx_buff[6] = '!';
irsanjul 2:e870bcd7e63b 724 multi.set_address(MCAST, PortSend);
irsanjul 0:fbb75122015f 725 sock.sendTo(multi, tx_buff, sizeof(tx_buff));
irsanjul 0:fbb75122015f 726 dbg.printf("All Data Not Valid, reset!!!!\r\n");
irsanjul 0:fbb75122015f 727 }
irsanjul 0:fbb75122015f 728 } else {
irsanjul 0:fbb75122015f 729 timeout++;
irsanjul 0:fbb75122015f 730 if (timeout >= 12000) {
irsanjul 0:fbb75122015f 731 sndrcv = 0;
irsanjul 0:fbb75122015f 732 timeout = 0;
irsanjul 0:fbb75122015f 733 }
irsanjul 0:fbb75122015f 734 }
irsanjul 0:fbb75122015f 735 Stdby_R = 1;
irsanjul 0:fbb75122015f 736 openForce();
irsanjul 0:fbb75122015f 737 break;
irsanjul 0:fbb75122015f 738 }
irsanjul 0:fbb75122015f 739 }
irsanjul 0:fbb75122015f 740
irsanjul 0:fbb75122015f 741 // membaca perintah dari server dari port 5004
irsanjul 0:fbb75122015f 742 set_IP();
irsanjul 0:fbb75122015f 743
irsanjul 0:fbb75122015f 744 // cek printer
irsanjul 0:fbb75122015f 745 if (!print_er) {
irsanjul 0:fbb75122015f 746 er_tmp2 = 0;
irsanjul 0:fbb75122015f 747 if (er_tmp1 < 3) {
irsanjul 0:fbb75122015f 748 tx_buff[4] = 'X';
irsanjul 0:fbb75122015f 749 tx_buff[5] = '0';
irsanjul 0:fbb75122015f 750 tx_buff[6] = '1';
irsanjul 2:e870bcd7e63b 751 multi.set_address(MCAST, PortSend);
irsanjul 0:fbb75122015f 752 dbg.printf("Printer Error\r\n");
irsanjul 0:fbb75122015f 753 sock.sendTo(multi, tx_buff, sizeof(tx_buff));
irsanjul 0:fbb75122015f 754 } else
irsanjul 0:fbb75122015f 755 er_tmp1 = 5;
irsanjul 0:fbb75122015f 756 er_tmp1++;
irsanjul 0:fbb75122015f 757 } else if (print_er) {
irsanjul 0:fbb75122015f 758 er_tmp1 = 0;
irsanjul 0:fbb75122015f 759 if (er_tmp2 < 3) {
irsanjul 0:fbb75122015f 760 tx_buff[4] = 'N';
irsanjul 0:fbb75122015f 761 tx_buff[5] = '0';
irsanjul 0:fbb75122015f 762 tx_buff[6] = '1';
irsanjul 0:fbb75122015f 763 dbg.printf("Printer Fixed\r\n");
irsanjul 2:e870bcd7e63b 764 multi.set_address(MCAST, PortSend);
irsanjul 0:fbb75122015f 765 sock.sendTo(multi, tx_buff, sizeof(tx_buff));
irsanjul 0:fbb75122015f 766 } else
irsanjul 0:fbb75122015f 767 er_tmp2 = 5;
irsanjul 0:fbb75122015f 768 er_tmp2++;
irsanjul 0:fbb75122015f 769 }
irsanjul 0:fbb75122015f 770 }
irsanjul 0:fbb75122015f 771 }