Changeset 153 in tmcsimulator for branches/BasicFEPClient


Ignore:
Timestamp:
10/20/2017 12:46:53 PM (9 years ago)
Author:
jtorres
Message:

BasicFEPClient now showing single yellow dot

Location:
branches/BasicFEPClient
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/BasicFEPClient/DataPacker.cpp

    r142 r153  
    6262                else 
    6363                    return -1; 
    64  
     64                 
     65                // if we have data (strcmp returns 0 if a string match) 
    6566                if (haveData == 0) { 
    6667                    LOOP *currLoop = station->loops.at(lane); 
    6768                    vol = currLoop->vol; 
    6869                    occ = (int) (currLoop->occ * 900 + 0.5); 
    69  
     70                    cout << "Volume: " << vol << endl; 
     71                    cout << "OCC : " << occ << endl; 
    7072                    VOLOCC packedVOLOCC = packVOLOCC(vol, occ); 
    7173                    pos++; 
     
    7375                    pos++; 
    7476                    msg[pos - 1] = packedVOLOCC.low; 
    75  
     77                     
    7678                    if (packNo == 5) { 
    7779                        station->MlTotVol += vol; 
  • branches/BasicFEPClient/network_factory.cpp

    r151 r153  
    3737 
    3838// Initializes the LOOP dataPack with all necessary static data and default dynamic data 
    39 void NetworkFactory::init_loop_dataPack(STATION *station) 
     39void NetworkFactory::init_loop_dataPack(STATION *loop) 
    4040{ 
    4141        int j; 
    4242        // Allocate memory for dataPack 
    43         station->dataPack = (unsigned char *) calloc(sizeof(unsigned char), station->length); 
     43        loop->dataPack = (unsigned char *) calloc(sizeof(unsigned char), loop->length); 
    4444 
    4545        // dataPack 5-8: lane config 
    4646        char d5 = 0, d6 = 0, d7 = 0, d8 = 0;             
    47         for (j = 0; j < station->loops.size(); j++) 
    48         { 
    49             char * currLoc = station->loops[j]->loop_loc; 
     47        for (j = 0; j < loop->loops.size(); j++) 
     48        { 
     49            char * currLoc = loop->loops[j]->loop_loc; 
    5050                for (int k = 0; k < 8; k++) 
    5151                { 
     
    6060                } 
    6161        } 
    62         station->dataPack[5-1] = d5; 
    63         station->dataPack[6-1] = d6; 
    64         station->dataPack[7-1] = d7; 
    65         station->dataPack[8-1] = d8; 
     62        loop->dataPack[5-1] = d5; 
     63        loop->dataPack[6-1] = d6; 
     64        loop->dataPack[7-1] = d7; 
     65        loop->dataPack[8-1] = d8; 
    6666 
    6767        // dataPack 1: Drop number, i.e. station address 
    68         station->dataPack[1-1] = station->drop; 
     68        loop->dataPack[1-1] = loop->drop; 
    6969 
    7070        // dataPack2 (2 bytes per loop) 
    71         station->dataPack[2-1] = station->loops.size() * 2 + Fixed_Byte_To_Checksum; 
     71        loop->dataPack[2-1] = loop->loops.size() * 2 + Fixed_Byte_To_Checksum; 
    7272 
    7373        // dataPacket 3 (lowbyte: # of mainline loops, highbyte: # of opposite loops) 
     
    7575        for (j = 1; j <= 6; j++) 
    7676        { 
    77                 low += DataAvail(station->dataPack[5-1], j); 
    78                 high += DataAvail(station->dataPack[6-1], j); 
     77                low += DataAvail(loop->dataPack[5-1], j); 
     78                high += DataAvail(loop->dataPack[6-1], j); 
    7979        } 
    8080        high = high << 4; 
    81         station->dataPack[3-1] = high | low; 
     81        loop->dataPack[3-1] = high | low; 
    8282 
    8383        // dataPack4 (Miscl. flags: samples are: 80, A0, E0, 00) 
    84         station->dataPack[4-1] = 0xA0; 
     84        loop->dataPack[4-1] = 0xA0; 
    8585 
    8686        // dataPack 9: initialized as 00 (meaning no metering); need to be updated every 30 sec 
    87         station->dataPack[9-1] = 0; 
     87        loop->dataPack[9-1] = 0; 
    8888 
    8989        // datadataPack 10-13: lane malfunction? Assuming all functional 
    90         station->dataPack[10-1] = 0; 
    91         station->dataPack[11-1] = 0; 
    92         station->dataPack[12-1] = 0; 
    93         station->dataPack[13-1] = 0; 
     90        loop->dataPack[10-1] = 0; 
     91        loop->dataPack[11-1] = 0; 
     92        loop->dataPack[12-1] = 0; 
     93        loop->dataPack[13-1] = 0; 
    9494 
    9595        // dataPack 14-22: ramp metering data 
    9696        // BYTE 16 and 22 need to be updated every 30 sec 
    9797        bool found = false; 
    98         for (j = 0; j < station->loops.size(); j++) 
    99         { 
    100                 if (strcmp(station->loops.at(0)->loop_loc, "DEMAND") == 0) 
     98        for (j = 0; j < loop->loops.size(); j++) 
     99        { 
     100                if (strcmp(loop->loops.at(0)->loop_loc, "DEMAND") == 0) 
    101101                { 
    102102                        found = true; 
     
    107107        { 
    108108                // BYTE 14: mostly 07, some are 05, 03, 00 
    109                 station->dataPack[14-1] = 0x07; 
     109                loop->dataPack[14-1] = 0x07; 
    110110                // mostly 06(TOD table 1); some are 0B (No metering) or 05(traffic responsive) 
    111                 station->dataPack[15-1] = 0x06; 
     111                loop->dataPack[15-1] = 0x06; 
    112112                // most 00, some are 01 (queue override) or 80(Meter ON sign) 
    113                 station->dataPack[16-1] = 0x00; 
     113                loop->dataPack[16-1] = 0x00; 
    114114                // Field Manual Rate 
    115                 station->dataPack[17-1] = 0xFF; 
     115                loop->dataPack[17-1] = 0xFF; 
    116116                // TOC Manual Rate 
    117                 station->dataPack[18-1] = 0xFF; 
     117                loop->dataPack[18-1] = 0xFF; 
    118118                // PSO Manual Rate 
    119                 station->dataPack[19-1] = 0xFF; 
     119                loop->dataPack[19-1] = 0xFF; 
    120120                // CORM Rate 
    121                 station->dataPack[20-1] = 0xFF; 
     121                loop->dataPack[20-1] = 0xFF; 
    122122                // Local Responsive Rate. DON'T UNDERSTAND YET 
    123                 station->dataPack[21-1] = 0x00; 
     123                loop->dataPack[21-1] = 0x00; 
    124124                // TOD Rate: need to query RAMP plugin!  
    125                 station->dataPack[22-1] = 0x00; 
     125                loop->dataPack[22-1] = 0x00; 
    126126        } 
    127127        // LDS: NO Metering 
    128128        else 
    129129        { 
    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; 
     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; 
    139139        } 
    140140 
    141141        // dataPack 23-24: sum of mainline/Oppsite traffic data; need to be updated every 30 sec 
    142         station->MlTotVol = 0; 
    143         station->OppTotVol = 0; 
    144         station->dataPack[23-1] = station->MlTotVol;     
    145         station->dataPack[24-1] = station->OppTotVol;    
     142        loop->MlTotVol = 0; 
     143        loop->OppTotVol = 0; 
     144        loop->dataPack[23-1] = loop->MlTotVol;   
     145        loop->dataPack[24-1] = loop->OppTotVol;  
    146146         
    147147        // dataPack 25-26: BYTE 25 is fixed, i.e. 03; BYTE 26 is either 0xA2 or 0x84 
    148         station->dataPack[25-1] = 0x03; 
    149         station->dataPack[26-1] = 0x84; 
     148        loop->dataPack[25-1] = 0x03; 
     149        loop->dataPack[26-1] = 0x84; 
    150150 
    151151        printf("lds=%d (%d), p1=%2X, p2=%2X, p3=%2X, p5=%2X, p6=%X, p7=%X, p8=%2X\n",  
    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 } 
    156  
    157 // TEST DATA: WORKING 
     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]); 
     155} 
     156 
     157// TEST DATA 
    158158// lds_id       line    drop sch lineinfo       system_key      sch_seq glo_seq         count   freeway Dir     ca_pm   lds_name                 
    159159// 1203103      50      13      13      13      1123005873      24148   1357650         19      55      S       6.88    MACARTHU1  
    160  
    161 // SAND CANYON: NOT WORKING 
    162 // 1204813      31      18      5       5       1123005744      26489   1357649         18      5       S       23.5    S OF SAND CNYN 
    163  
    164160FEP_LINE * NetworkFactory::load_lines(int *size, const char * fName) 
    165161{ 
    166162        FEP_LINE *lines = (FEP_LINE *) calloc(sizeof(FEP_LINE), 1); 
    167163        *size = 1; 
    168         lines[0].lineNum = 31; 
    169         lines[0].lds.push_back(1204813); 
     164        lines[0].lineNum = 50; 
     165        lines[0].lds.push_back(1203103); 
    170166        lines[0].ldsIndex.push_back(0); 
    171         lines[0].count = 18; 
    172         lines[0].schedule = 5; 
    173         lines[0].globalSeq = 1357649; 
    174         lines[0].schedleSeq = 26489; 
     167        lines[0].count = 19; 
     168        lines[0].schedule = 13; 
     169        lines[0].globalSeq = 1357650; 
     170        lines[0].schedleSeq = 24148; 
    175171        return lines;    
    176172} 
    177173 
    178 // TEST DATA: Working (MacAruthur)) 
     174// TEST DATA 
    179175//FWY   Dir     POSTMI  LDS_ID  VDS_ID  LOOP_ID LOC    LANE LOOP_LOC            PARAMICS_NAME  PARAMICS_LANE     
    180176//55    S       6.88    1203103 1203104 1203105 QU      1       QUEUE           55s6.88ora      0 
     177 
    181178//55    S       6.88    1203103 1203104 1203106 DM      2       DEMAND          55s6.88ora      0 
     179 
    182180//55    S       6.88    1203103 1203104 1203107 PA      3       PASSAGE         55s6.88ora      0 
     181 
    183182//55    S       6.88    1203103 1203108 1203109 HV      1       SD_1            ?               0 
     183 
    184184//55    S       6.88    1203103 1203110 1203111 ML      1       ML_1            55s6.88ml       4 
     185 
    185186//55    S       6.88    1203103 1203110 1203112 ML      2       ML_2            55s6.88ml       3 
     187 
    186188//55    S       6.88    1203103 1203110 1203113 ML      3       ML_3            55s6.88ml       2 
     189 
    187190//55    S       6.88    1203103 1203110 1203114 ML      4       ML_4            55s6.88ml       1 
    188  
    189 // TEST DATA: Not working (Sand canyon) 
    190 //5       S       23.5    1204813 1204814 1204815 HV      1       SD_1            5s23.5hv        1 
    191 //5       S       23.5    1204813 1204816 1204818 ML      2       ML_2            5s23.5ml        5 
    192 //5       S       23.5    1204813 1204816 1204819 ML      3       ML_3            5s23.5ml        4 
    193 //5       S       23.5    1204813 1204816 1204820 ML      4       ML_4            5s23.5ml        3 
    194 //5       S       23.5    1204813 1204816 1204821 ML      5       ML_5            5s23.5ml        2 
    195 //5       S       23.5    1204813 1204816 1204822 ML      6       ML_6            5s23.5ml        1 
    196 //5       N       23.5    1204813 1204823 1204824 OH      1       SD_2            5n23.5hv        1 
    197 //5       N       23.5    1204813 1204825 1204826 OS      1       OS_1            5n23.5ml        6 
    198 //5       N       23.5    1204813 1204825 1204827 OS      2       OS_2            5n23.5ml        5 
    199 //5       N       23.5    1204813 1204825 1204828 OS      3       OS_3            5n23.5ml        4 
    200 //5       N       23.5    1204813 1204825 1204829 OS      4       OS_4            5n23.5ml        3 
    201 //5       N       23.5    1204813 1204825 1204830 OS      5       OS_5            5n23.5ml        2 
    202 //5       N       23.5    1204813 1204825 1204831 OS      6       OS_6            5n23.5ml        1 
    203  
    204  
    205 //5       S       23.5    1204813 1204816 1204817 ML      1       ML_1            5s23.5ml        6 
    206  
    207191STATION * NetworkFactory::load_lds(const char * fName) 
    208192{ 
    209193        /* Read loop meta data */ 
    210194        STATION *lds_map = (STATION *) calloc(sizeof(STATION), 1); 
    211         lds_map[0].lds = 1204813; 
    212         lds_map[0].line_num = 31; 
    213         lds_map[0].drop = 18; 
     195        lds_map[0].lds = 1203103; 
     196        lds_map[0].line_num = 50; 
     197        lds_map[0].drop = 13; 
    214198        LOOP *loop = new LOOP; 
    215         loop->loopID = 1204817; 
     199        loop->loopID = 1203111; 
    216200        loop->loop_loc = "ML_1"; 
    217         loop->occ = 0; 
    218         loop->vol = 0; 
    219          
     201         
     202        LOOP *looptwo = new LOOP; 
     203        looptwo->loopID = 1203112; 
     204        looptwo->loop_loc = "ML_2"; 
     205        // occ 30 
     206        // vol 15 makes a speed of 20 RED 
     207         
     208        // occ 30 
     209        // vol 20 makes a speed of 26 YELLOW 
     210         
     211        // occ 30 
     212        // vol 30 makes a speed of 39 GREEN 
     213        loop->occ = 30; 
     214        loop->vol = 20; 
     215         
     216        looptwo->occ = 30; 
     217        looptwo->vol = 15; 
     218         
     219        // Loop ids 
     220        long *loopIDs = (long *) calloc(sizeof(long), lds_map[0].loops.size()); 
     221        loopIDs[0] = 1203113; 
     222        loopIDs[1] = 1203112; 
    220223        lds_map[0].loops.push_back(loop); 
    221  
     224        lds_map[0].loops.push_back(looptwo); 
     225         
    222226        // Init Loop dataPack 
    223227        lds_map[0].length = lds_map[0].loops.size() * 2 + CONTROL_DATA_LEN; 
Note: See TracChangeset for help on using the changeset viewer.