| 184 | | ==== Message format ==== |
| 185 | | |
| | 184 | ==== Traffic Conditions Message Structure ==== |
| | 185 | |
| | 186 | As seen above in the fep_anser_short_msg struct, the traffic conditions message is a char array. The FEP Simulator uses the static packData(STATION*) method from the DataPacker class to pack the traffic condition data into a message. |
| | 187 | |
| | 188 | The message contains static, such as station drop numbers, and dynamic data, like volume and occupancy. |
| | 189 | - byte 1: station drop number |
| | 190 | - byte 2: number of loops * 2 + Fixed_Byte_To_Checksum |
| | 191 | - byte 3: lowbyte: # of mainline loops, highbyte: # of opp loops => high | low |
| | 192 | - byte 4: Always 0xA0. UNKNOWN |
| | 193 | - bytes 5-8: lane configuration |
| | 194 | - byte 9: 0 (no metering) |
| | 195 | - byte 10 - 13: lane malfunction flags. We always assume functional and set to 0. |
| | 196 | - byte 14 - 22: ramp metering data. We do not worry about these values. See code for more details. |
| | 197 | - byte 23: ML Total Volume |
| | 198 | - byte 24: OPP Total Volume |
| | 199 | - byte 25: Always 0x03. UNKNOWN. |
| | 200 | - byte 26: Always 0x84. UNKNOWN. |
| | 201 | |
| | 202 | - byte 27 - second to last byte: dynamic data for loop detectors. If there is data for the loop detector, pack volume and occupancy into a two byte data packet using the packVOLOCC(vol, occ) method, insert at the current position, and increase the current position after doing so. |
| | 203 | |
| | 204 | 1/8 7:27AM: NOTE TO SELF. DO I NEED TO CALL DYNAMIC DATAPACK BEFORE STATIC DATA PACK??????? |
| | 205 | - last byte: checksum |