- Timestamp:
- 10/19/2017 01:44:14 PM (9 years ago)
- File:
-
- 1 edited
-
branches/BasicFEPClient/network_factory.cpp (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/BasicFEPClient/network_factory.cpp
r146 r151 37 37 38 38 // Initializes the LOOP dataPack with all necessary static data and default dynamic data 39 void NetworkFactory::init_loop_dataPack(STATION * loop)39 void NetworkFactory::init_loop_dataPack(STATION *station) 40 40 { 41 41 int j; 42 42 // Allocate memory for dataPack 43 loop->dataPack = (unsigned char *) calloc(sizeof(unsigned char), loop->length);43 station->dataPack = (unsigned char *) calloc(sizeof(unsigned char), station->length); 44 44 45 45 // dataPack 5-8: lane config 46 46 char d5 = 0, d6 = 0, d7 = 0, d8 = 0; 47 for (j = 0; j < loop->loops.size(); j++)48 { 49 char * currLoc = loop->loops[j]->loop_loc;47 for (j = 0; j < station->loops.size(); j++) 48 { 49 char * currLoc = station->loops[j]->loop_loc; 50 50 for (int k = 0; k < 8; k++) 51 51 { … … 60 60 } 61 61 } 62 loop->dataPack[5-1] = d5;63 loop->dataPack[6-1] = d6;64 loop->dataPack[7-1] = d7;65 loop->dataPack[8-1] = d8;62 station->dataPack[5-1] = d5; 63 station->dataPack[6-1] = d6; 64 station->dataPack[7-1] = d7; 65 station->dataPack[8-1] = d8; 66 66 67 67 // dataPack 1: Drop number, i.e. station address 68 loop->dataPack[1-1] = loop->drop;68 station->dataPack[1-1] = station->drop; 69 69 70 70 // dataPack2 (2 bytes per loop) 71 loop->dataPack[2-1] = loop->loops.size() * 2 + Fixed_Byte_To_Checksum;71 station->dataPack[2-1] = station->loops.size() * 2 + Fixed_Byte_To_Checksum; 72 72 73 73 // dataPacket 3 (lowbyte: # of mainline loops, highbyte: # of opposite loops) … … 75 75 for (j = 1; j <= 6; j++) 76 76 { 77 low += DataAvail( loop->dataPack[5-1], j);78 high += DataAvail( loop->dataPack[6-1], j);77 low += DataAvail(station->dataPack[5-1], j); 78 high += DataAvail(station->dataPack[6-1], j); 79 79 } 80 80 high = high << 4; 81 loop->dataPack[3-1] = high | low;81 station->dataPack[3-1] = high | low; 82 82 83 83 // dataPack4 (Miscl. flags: samples are: 80, A0, E0, 00) 84 loop->dataPack[4-1] = 0xA0;84 station->dataPack[4-1] = 0xA0; 85 85 86 86 // dataPack 9: initialized as 00 (meaning no metering); need to be updated every 30 sec 87 loop->dataPack[9-1] = 0;87 station->dataPack[9-1] = 0; 88 88 89 89 // datadataPack 10-13: lane malfunction? Assuming all functional 90 loop->dataPack[10-1] = 0;91 loop->dataPack[11-1] = 0;92 loop->dataPack[12-1] = 0;93 loop->dataPack[13-1] = 0;90 station->dataPack[10-1] = 0; 91 station->dataPack[11-1] = 0; 92 station->dataPack[12-1] = 0; 93 station->dataPack[13-1] = 0; 94 94 95 95 // dataPack 14-22: ramp metering data 96 96 // BYTE 16 and 22 need to be updated every 30 sec 97 97 bool found = false; 98 for (j = 0; j < loop->loops.size(); j++)99 { 100 if (strcmp( loop->loops.at(0)->loop_loc, "DEMAND") == 0)98 for (j = 0; j < station->loops.size(); j++) 99 { 100 if (strcmp(station->loops.at(0)->loop_loc, "DEMAND") == 0) 101 101 { 102 102 found = true; … … 107 107 { 108 108 // BYTE 14: mostly 07, some are 05, 03, 00 109 loop->dataPack[14-1] = 0x07;109 station->dataPack[14-1] = 0x07; 110 110 // mostly 06(TOD table 1); some are 0B (No metering) or 05(traffic responsive) 111 loop->dataPack[15-1] = 0x06;111 station->dataPack[15-1] = 0x06; 112 112 // most 00, some are 01 (queue override) or 80(Meter ON sign) 113 loop->dataPack[16-1] = 0x00;113 station->dataPack[16-1] = 0x00; 114 114 // Field Manual Rate 115 loop->dataPack[17-1] = 0xFF;115 station->dataPack[17-1] = 0xFF; 116 116 // TOC Manual Rate 117 loop->dataPack[18-1] = 0xFF;117 station->dataPack[18-1] = 0xFF; 118 118 // PSO Manual Rate 119 loop->dataPack[19-1] = 0xFF;119 station->dataPack[19-1] = 0xFF; 120 120 // CORM Rate 121 loop->dataPack[20-1] = 0xFF;121 station->dataPack[20-1] = 0xFF; 122 122 // Local Responsive Rate. DON'T UNDERSTAND YET 123 loop->dataPack[21-1] = 0x00;123 station->dataPack[21-1] = 0x00; 124 124 // TOD Rate: need to query RAMP plugin! 125 loop->dataPack[22-1] = 0x00;125 station->dataPack[22-1] = 0x00; 126 126 } 127 127 // LDS: NO Metering 128 128 else 129 129 { 130 loop->dataPack[14-1] = 0x00;131 loop->dataPack[15-1] = 0x0B;132 loop->dataPack[16-1] = 0x00;133 loop->dataPack[17-1] = 0xFF;134 loop->dataPack[18-1] = 0xFF;135 loop->dataPack[19-1] = 0xFF;136 loop->dataPack[20-1] = 0xFF;137 loop->dataPack[21-1] = 0x00;138 loop->dataPack[22-1] = 0x00;130 station->dataPack[14-1] = 0x00; 131 station->dataPack[15-1] = 0x0B; 132 station->dataPack[16-1] = 0x00; 133 station->dataPack[17-1] = 0xFF; 134 station->dataPack[18-1] = 0xFF; 135 station->dataPack[19-1] = 0xFF; 136 station->dataPack[20-1] = 0xFF; 137 station->dataPack[21-1] = 0x00; 138 station->dataPack[22-1] = 0x00; 139 139 } 140 140 141 141 // dataPack 23-24: sum of mainline/Oppsite traffic data; need to be updated every 30 sec 142 loop->MlTotVol = 0;143 loop->OppTotVol = 0;144 loop->dataPack[23-1] = loop->MlTotVol;145 loop->dataPack[24-1] = loop->OppTotVol;142 station->MlTotVol = 0; 143 station->OppTotVol = 0; 144 station->dataPack[23-1] = station->MlTotVol; 145 station->dataPack[24-1] = station->OppTotVol; 146 146 147 147 // dataPack 25-26: BYTE 25 is fixed, i.e. 03; BYTE 26 is either 0xA2 or 0x84 148 loop->dataPack[25-1] = 0x03;149 loop->dataPack[26-1] = 0x84;148 station->dataPack[25-1] = 0x03; 149 station->dataPack[26-1] = 0x84; 150 150 151 151 printf("lds=%d (%d), p1=%2X, p2=%2X, p3=%2X, p5=%2X, p6=%X, p7=%X, p8=%2X\n", 152 loop->lds, loop->length, loop->dataPack[1-1], loop->dataPack[2-1],153 loop->dataPack[3-1], loop->dataPack[5-1],154 loop->dataPack[6-1], loop->dataPack[7-1], loop->dataPack[8-1]);152 station->lds, station->length, station->dataPack[1-1], station->dataPack[2-1], 153 station->dataPack[3-1], station->dataPack[5-1], 154 station->dataPack[6-1], station->dataPack[7-1], station->dataPack[8-1]); 155 155 } 156 156
Note: See TracChangeset
for help on using the changeset viewer.
