Changeset 461

Show
Ignore:
Timestamp:
09/03/09 12:29:03 (15 years ago)
Author:
bhilburn
Message:

Merge branch 'local-fixingSML' into local-trunk

Location:
vtcross/trunk/src
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • vtcross/trunk/src/include/vtcross/components.h

    r440 r461  
    138138        void DeregisterComponent(); 
    139139 
    140     /* Starts the SML Server and watches it for incoming messages 
    141      */ 
    142     void StartSMLServer(); 
     140        /* Starts the SML Server and watches it for incoming messages 
     141         */ 
     142        void StartSMLServer(); 
    143143 
    144144    private:  
     
    157157         */ 
    158158        void ReceiveServices(int32_t ID); 
    159          void DeregisterServices(int32_t ID); 
     159        void DeregisterServices(int32_t ID); 
    160160 
    161161        /* Change the active mission of the radio to a new one and adjust radio 
     
    197197        int16_t CEPort; 
    198198        int16_t SMLport; 
    199         uint16_t numberOfCognitiveEngines; 
     199 
     200        uint32_t numberOfCognitiveEngines; 
     201 
    200202        int32_t cogEngSrv; 
    201203        int32_t activeMission; 
     204 
    202205        uint32_t Current_ID;  
     206 
    203207        bool CE_Present; 
    204208        CE_Reg *CE_List; 
  • vtcross/trunk/src/service_management_layer/ServiceManagementLayer.cpp

    r448 r461  
    5757 
    5858 
    59 typedef struct services_s *services_DB; 
    60 typedef struct data_s *data_DB; 
    61  
    6259using namespace std; 
    6360 
     61 
     62/* Internal structs used to keep track of sqlite database information. */ 
    6463struct services_s { 
    6564    string filename; 
     
    7877}; 
    7978 
    80 services_DB _services_DB; 
    81 data_DB _data_DB; 
     79typedef struct services_s *services_DB_t; 
     80typedef struct data_s *data_DB_t; 
     81 
     82/* Global tracking of the services and parameters that this instance of SML is 
     83 * aware of. */ 
     84services_DB_t services_DB; 
     85data_DB_t data_DB; 
     86 
     87/* The filename of the SML configuration, used if the SML is told to reload it's 
     88 * configuration. */ 
    8289string _SML_Config; 
    83 bool shellFound; 
    84  
    85 /* Callback function used internally by some of the SQLite3 commands */ 
     90 
     91/* Keeps track of whether or not the 'shell' component is used by the active 
     92 * mission. */ 
     93bool shellUsed; 
     94 
     95 
     96/* Callback function used internally by some of the SQLite3 commands for debug 
     97 * output. Code provided by sqlite documentation. */ 
    8698int32_t  
    8799callback(void *notUsed, int32_t argc, char **argv, char **azColName) 
     
    94106    return 0; 
    95107} 
     108 
    96109 
    97110/* Useful for spotchecking what's in the database */ 
     
    101114    /* 
    102115    LOG("\n\n\n"); 
    103     _data_DB->command = "select "; 
    104     _data_DB->command.append(_data_DB->tablename); 
    105     _data_DB->command.append(".* from "); 
    106     _data_DB->command.append(_data_DB->tablename); 
    107     _data_DB->command.append(";"); 
     116    data_DB->command = "select "; 
     117    data_DB->command.append(data_DB->tablename); 
     118    data_DB->command.append(".* from "); 
     119    data_DB->command.append(data_DB->tablename); 
     120    data_DB->command.append(";"); 
    108121 
    109122    char *errorMsg; 
    110     int32_t rc = sqlite3_exec(_data_DB->db, _data_DB->command.c_str(), callback, 0, &errorMsg); 
     123    int32_t rc = sqlite3_exec(data_DB->db, data_DB->command.c_str(), callback, 0, &errorMsg); 
    111124    if((rc != SQLITE_OK) && (rc != 101)) 
    112125        WARNING("SQL error: %s\n", errorMsg); 
    113126 
    114     LOG("database %s, table %s:\n", _data_DB->filename, _data_DB->tablename); 
     127    LOG("database %s, table %s:\n", data_DB->filename, data_DB->tablename); 
    115128    LOG("\n\n\n"); 
    116129    */ 
     
    137150    int32_t rc;         /* sqlite command return code */ 
    138151 
    139     _services_DB->command = "drop table "; 
    140     _services_DB->command.append(_services_DB->tablename); 
    141     rc = sqlite3_exec(_services_DB->db, _services_DB->command.c_str(), callback, 0, &errorMsg); 
     152    services_DB->command = "drop table "; 
     153    services_DB->command.append(services_DB->tablename); 
     154    rc = sqlite3_exec(services_DB->db, services_DB->command.c_str(), callback, 0, &errorMsg); 
    142155    if((rc != SQLITE_OK) && (rc != 101)) 
    143156        WARNING("ServiceManagementLayer::Destructor services 'drop table' error: %s\n", errorMsg); 
    144157 
    145     _services_DB->command = "vacuum"; 
    146     rc = sqlite3_exec(_services_DB->db, _services_DB->command.c_str(), callback, 0, &errorMsg); 
     158    services_DB->command = "vacuum"; 
     159    rc = sqlite3_exec(services_DB->db, services_DB->command.c_str(), callback, 0, &errorMsg); 
    147160    if((rc != SQLITE_OK) && (rc != 101)) 
    148161        WARNING("ServiceManagementLayer::Destructor services 'vacuum' error: %s\n", errorMsg); 
    149162 
    150     free(_services_DB); 
    151  
    152     _data_DB->command = "drop table "; 
    153     _data_DB->command.append(_data_DB->tablename); 
    154     rc = sqlite3_exec(_data_DB->db, _data_DB->command.c_str(), callback, 0, &errorMsg); 
     163    free(services_DB); 
     164 
     165    data_DB->command = "drop table "; 
     166    data_DB->command.append(data_DB->tablename); 
     167    rc = sqlite3_exec(data_DB->db, data_DB->command.c_str(), callback, 0, &errorMsg); 
    155168    if((rc != SQLITE_OK) && (rc != 101)) 
    156169        WARNING("ServiceManagementLayer::Destructor data 'drop table' error: %s\n", errorMsg); 
    157170 
    158     _data_DB->command = "vacuum"; 
    159     rc = sqlite3_exec(_data_DB->db, _data_DB->command.c_str(), callback, 0, &errorMsg); 
     171    data_DB->command = "vacuum"; 
     172    rc = sqlite3_exec(data_DB->db, data_DB->command.c_str(), callback, 0, &errorMsg); 
    160173    if((rc != SQLITE_OK) && (rc != 101)) 
    161174        WARNING("ServiceManagementLayer::Destructor data 'vacuum' error: %s\n", errorMsg); 
    162175 
    163     free(_data_DB); 
     176    free(data_DB); 
    164177} 
    165178 
     
    204217    int32_t rc;             /* sqlite command return code */ 
    205218 
    206     _services_DB = new services_s; 
    207     _services_DB->filename="Services_Table"; 
    208     sqlite3_open(_services_DB->filename.c_str(), &(_services_DB->db)); 
     219    services_DB = new services_s; 
     220    services_DB->filename="Services_Table"; 
     221    sqlite3_open(services_DB->filename.c_str(), &(services_DB->db)); 
    209222 
    210223    char *cols[] = {(char *)"ID_Num", (char *)"Service_Name"}; 
    211224 
    212     _services_DB->tablename="Services"; 
     225    services_DB->tablename="Services"; 
    213226 
    214227    /* ifprogram execution ends in anything other than a ordered shutdown, DB's will still  
    215228     * be there for next run. Need to get rid of it so that old data isn't inadvertantly  
    216229     * used in the next execution cycle. */ 
    217     _services_DB->command = "DROP TABLE ifEXISTS Services;";      
    218  
    219     rc = sqlite3_prepare_v2(_services_DB->db, _services_DB->command.c_str(), 128, &ppStmt, &pzTail); 
     230    services_DB->command = "DROP TABLE ifEXISTS Services;";      
     231 
     232    rc = sqlite3_prepare_v2(services_DB->db, services_DB->command.c_str(), 128, &ppStmt, &pzTail); 
    220233    if((rc != SQLITE_OK) && (rc != 101)) 
    221234        WARNING("ServiceManagementLayer::CreateServicesDB 'prepare_stmt' error %d\n", rc); 
     
    225238        WARNING("ServiceManagementLayer::CreateServicesDB 'step' error\n"); 
    226239 
    227     _services_DB->num_columns = 2; 
     240    services_DB->num_columns = 2; 
    228241 
    229242    /* Generate command */ 
    230     _services_DB->command="CREATE TABLE "; 
    231     _services_DB->command.append(_services_DB->tablename); 
    232     _services_DB->command.append("("); 
    233     _services_DB->command.append(cols[0]); 
    234     _services_DB->command.append(" INT, "); 
    235     _services_DB->command.append(cols[1]); 
    236     _services_DB->command.append(" TEXT);"); 
     243    services_DB->command="CREATE TABLE "; 
     244    services_DB->command.append(services_DB->tablename); 
     245    services_DB->command.append("("); 
     246    services_DB->command.append(cols[0]); 
     247    services_DB->command.append(" INT, "); 
     248    services_DB->command.append(cols[1]); 
     249    services_DB->command.append(" TEXT);"); 
    237250 
    238251    /* Execute create table command */ 
    239     rc = sqlite3_prepare_v2(_services_DB->db, _services_DB->command.c_str(), 128, &ppStmt, &pzTail); 
     252    rc = sqlite3_prepare_v2(services_DB->db, services_DB->command.c_str(), 128, &ppStmt, &pzTail); 
    240253    if((rc != SQLITE_OK) && (rc != 101)) 
    241254        WARNING("ServiceManagementLayer::CreateServicesDB 'prepare_stmt' error %d\n", rc); 
     
    259272    int32_t rc;             /* sqlite command return code */ 
    260273 
    261     _data_DB = new data_s; 
    262  
    263     _data_DB->filename="Data_Table"; 
    264     sqlite3_open(_data_DB->filename.c_str(), &(_data_DB->db)); 
     274    data_DB = new data_s; 
     275 
     276    data_DB->filename="Data_Table"; 
     277    sqlite3_open(data_DB->filename.c_str(), &(data_DB->db)); 
    265278 
    266279    char *cols[] = {(char *)"Tag", (char *)"Data"}; 
    267280 
    268     _data_DB->tablename = "Data"; 
    269     _data_DB->command = "DROP TABLE ifEXISTS Data;";      
    270  
    271     rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), 128, &ppStmt, &pzTail); 
     281    data_DB->tablename = "Data"; 
     282    data_DB->command = "DROP TABLE ifEXISTS Data;";      
     283 
     284    rc = sqlite3_prepare_v2(data_DB->db, data_DB->command.c_str(), 128, &ppStmt, &pzTail); 
    272285    if((rc != SQLITE_OK) && (rc != 101)) 
    273286        WARNING("ServiceManagementLayer::CreateDataDB 'prepare_stmt' error %d\n", rc); 
     
    277290        WARNING("ServiceManagementLayer::CreateDataDB 'step' error\n"); 
    278291 
    279     _data_DB->num_columns = 2; 
     292    data_DB->num_columns = 2; 
    280293 
    281294    /* Generate command */ 
    282     _data_DB->command = "CREATE TABLE "; 
    283     _data_DB->command.append(_data_DB->tablename); 
    284     _data_DB->command.append("("); 
    285     _data_DB->command.append(cols[0]); 
     295    data_DB->command = "CREATE TABLE "; 
     296    data_DB->command.append(data_DB->tablename); 
     297    data_DB->command.append("("); 
     298    data_DB->command.append(cols[0]); 
    286299 
    287300    /* First column is the name of the data (corresponding to the name of the output/input pair) 
    288301     * It is the primary key so any subsequent data with the same name will replace the row. */ 
    289     _data_DB->command.append(" TEXT PRIMARY KEY ON CONFLICT REPLACE, "); 
    290     _data_DB->command.append(cols[1]); 
    291     _data_DB->command.append(" TEXT);"); 
    292  
    293     rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), 128, &ppStmt, &pzTail); 
     302    data_DB->command.append(" TEXT PRIMARY KEY ON CONFLICT REPLACE, "); 
     303    data_DB->command.append(cols[1]); 
     304    data_DB->command.append(" TEXT);"); 
     305 
     306    rc = sqlite3_prepare_v2(data_DB->db, data_DB->command.c_str(), 128, &ppStmt, &pzTail); 
    294307    if((rc != SQLITE_OK) && (rc != 101)) 
    295308        WARNING("ServiceManagementLayer::CreateDataDB 'prepare_stmt' error %d\n", rc); 
     
    574587 
    575588    /* Generate command */ 
    576     _services_DB->command = "insert into "; 
    577     _services_DB->command.append(_services_DB->tablename);  
    578     _services_DB->command.append(" ("); 
    579     _services_DB->command.append(cols[0]); 
    580     _services_DB->command.append(", "); 
    581     _services_DB->command.append(cols[1]); 
    582     _services_DB->command.append(") "); 
    583     _services_DB->command.append(" values("); 
     589    services_DB->command = "insert into "; 
     590    services_DB->command.append(services_DB->tablename);  
     591    services_DB->command.append(" ("); 
     592    services_DB->command.append(cols[0]); 
     593    services_DB->command.append(", "); 
     594    services_DB->command.append(cols[1]); 
     595    services_DB->command.append(") "); 
     596    services_DB->command.append(" values("); 
    584597 
    585598    char temp[3]; 
     
    587600    sprintf(temp, "%d", ID); 
    588601 
    589     _services_DB->command.append(temp); 
    590     _services_DB->command.append(", '"); 
    591     _services_DB->command.append(buffer); 
    592     _services_DB->command.append("');"); 
     602    services_DB->command.append(temp); 
     603    services_DB->command.append(", '"); 
     604    services_DB->command.append(buffer); 
     605    services_DB->command.append("');"); 
    593606     
    594607    /* Execute add command */ 
    595608    char *errorMsg; 
    596     int rc = sqlite3_exec(_services_DB->db, _services_DB->command.c_str(), callback, 0, &errorMsg); 
     609    int rc = sqlite3_exec(services_DB->db, services_DB->command.c_str(), callback, 0, &errorMsg); 
    597610    if((rc != SQLITE_OK) && (rc != 101)) 
    598611        WARNING("ServiceManagementLayer::RecieveServices DB Error %s\n", errorMsg); 
     
    633646                /* ifit is a service, search the database of registered services to find  
    634647                 * the ID of the component that registered it */ 
    635                 _services_DB->command="select "; 
    636                 _services_DB->command.append(_services_DB->tablename); 
    637                 _services_DB->command.append(".* from "); 
    638                 _services_DB->command.append( _services_DB->tablename); 
    639                 _services_DB->command.append(" where Service_Name=='"); 
    640                 _services_DB->command.append(miss[activeMission].services[i].name); 
    641                 _services_DB->command.append("';"); 
     648                services_DB->command="select "; 
     649                services_DB->command.append(services_DB->tablename); 
     650                services_DB->command.append(".* from "); 
     651                services_DB->command.append( services_DB->tablename); 
     652                services_DB->command.append(" where Service_Name=='"); 
     653                services_DB->command.append(miss[activeMission].services[i].name); 
     654                services_DB->command.append("';"); 
    642655     
    643656                sqlite3_stmt * pStatement; 
    644                 int32_t rc = sqlite3_prepare_v2(_services_DB->db, _services_DB->command.c_str(), \ 
     657                int32_t rc = sqlite3_prepare_v2(services_DB->db, services_DB->command.c_str(), \ 
    645658                        -1, &pStatement, NULL); 
    646659                if(rc == SQLITE_OK) {  
     
    655668                } else { 
    656669                    WARNING("services_DB:: Error executing SQL statement. rc = %i\n%s\n", \ 
    657                             rc, _services_DB->command.c_str()); 
     670                            rc, services_DB->command.c_str()); 
    658671                } 
    659672 
     
    691704   /* Send a message directly to the shell */ 
    692705   if(miss[activeMission].services[sourceID].name.find("shell") != string::npos) { 
    693        shellFound=true; 
     706       shellUsed=true; 
    694707 
    695708       int32_t k = 0; 
     
    702715       for(int32_t t = 0; t < k; t++) { 
    703716           memset(buffer, 0 , 256); 
    704            _data_DB->command="select "; 
    705            _data_DB->command.append(_data_DB->tablename); 
    706            _data_DB->command.append(".* from "); 
    707            _data_DB->command.append(_data_DB->tablename); 
    708            _data_DB->command.append(" where Tag=='"); 
    709            _data_DB->command.append(miss[activeMission].input[t]); 
    710            _data_DB->command.append("';"); 
     717           data_DB->command="select "; 
     718           data_DB->command.append(data_DB->tablename); 
     719           data_DB->command.append(".* from "); 
     720           data_DB->command.append(data_DB->tablename); 
     721           data_DB->command.append(" where Tag=='"); 
     722           data_DB->command.append(miss[activeMission].input[t]); 
     723           data_DB->command.append("';"); 
    711724           sqlite3_stmt * pStatement; 
    712725 
    713            int32_t rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), \ 
     726           int32_t rc = sqlite3_prepare_v2(data_DB->db, data_DB->command.c_str(), \ 
    714727                   -1, &pStatement, NULL); 
    715728           if(rc == SQLITE_OK) {  
     
    717730                   data=((const char*) sqlite3_column_text(pStatement, 1));  
    718731               else { 
    719                    LOG("3data_DB:: Data not yet in DB., %s\n", _data_DB->command.c_str()); 
     732                   LOG("3data_DB:: Data not yet in DB., %s\n", data_DB->command.c_str()); 
    720733                   rc = 31337; 
    721734               } 
     
    723736           else { 
    724737               WARNING("data_DB:: Error executing SQL statement. rc = %i\n%s\n", \ 
    725                        rc,_data_DB->command.c_str()); 
     738                       rc,data_DB->command.c_str()); 
    726739           } 
    727740 
     
    768781ServiceManagementLayer::PerformActiveMission() 
    769782{ 
    770     shellFound = false; 
     783    shellUsed = false; 
    771784    std::string data_param; 
    772785    std::string data_obsv; 
     
    797810        memset(buffer1, 0, 256); 
    798811        ReadMessage(shellSocketFD, buffer1); 
    799         _data_DB->command="insert into "; 
    800         _data_DB->command.append(_data_DB->tablename);  
    801         _data_DB->command.append(" ("); 
    802         _data_DB->command.append(cols[0]); 
    803         _data_DB->command.append(", "); 
    804         _data_DB->command.append(cols[1]); 
    805         _data_DB->command.append(") "); 
     812        data_DB->command="insert into "; 
     813        data_DB->command.append(data_DB->tablename);  
     814        data_DB->command.append(" ("); 
     815        data_DB->command.append(cols[0]); 
     816        data_DB->command.append(", "); 
     817        data_DB->command.append(cols[1]); 
     818        data_DB->command.append(") "); 
    806819 
    807820        memset(buffer, 0, 256); 
    808821        ReadMessage(shellSocketFD, buffer); 
    809         _data_DB->command.append(" values('"); 
    810         _data_DB->command.append(buffer1); 
    811         _data_DB->command.append("', '1@"); 
    812         _data_DB->command.append(buffer1); 
    813         _data_DB->command.append("@"); 
    814         _data_DB->command.append(buffer); 
    815         _data_DB->command.append("');"); 
    816  
    817         rc = sqlite3_exec(_data_DB->db, _data_DB->command.c_str(), callback, 0, &errorMsg); 
     822        data_DB->command.append(" values('"); 
     823        data_DB->command.append(buffer1); 
     824        data_DB->command.append("', '1@"); 
     825        data_DB->command.append(buffer1); 
     826        data_DB->command.append("@"); 
     827        data_DB->command.append(buffer); 
     828        data_DB->command.append("');"); 
     829 
     830        rc = sqlite3_exec(data_DB->db, data_DB->command.c_str(), callback, 0, &errorMsg); 
    818831        if((rc != SQLITE_OK) && (rc != 101)) 
    819832           WARNING("SQL error: %s\n", errorMsg); 
     
    830843                    input = miss[activeMission].services[i - numstatements[0] - 1].output[t]; 
    831844 
    832                     _data_DB->command="SELECT "; 
    833                     _data_DB->command.append(_data_DB->tablename); 
    834                     _data_DB->command.append(".* from "); 
    835                     _data_DB->command.append(_data_DB->tablename); 
    836                     _data_DB->command.append(" where Tag=='"); 
    837                     _data_DB->command.append(input); 
    838                     _data_DB->command.append("';"); 
     845                    data_DB->command="SELECT "; 
     846                    data_DB->command.append(data_DB->tablename); 
     847                    data_DB->command.append(".* from "); 
     848                    data_DB->command.append(data_DB->tablename); 
     849                    data_DB->command.append(" where Tag=='"); 
     850                    data_DB->command.append(input); 
     851                    data_DB->command.append("';"); 
    839852 
    840853                    sqlite3_stmt *pStatement; 
    841                     rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), \ 
     854                    rc = sqlite3_prepare_v2(data_DB->db, data_DB->command.c_str(), \ 
    842855                            -1, &pStatement, NULL); 
    843856                    if(rc == SQLITE_OK) {  
     
    850863                    } else { 
    851864                        WARNING("data_DB:: Error executing SQL statement. rc = %i\n%s\n", \ 
    852                                 rc,_data_DB->command.c_str()); 
     865                                rc,data_DB->command.c_str()); 
    853866                    } 
    854867 
     
    865878            if(miss[activeMission].services[i].output[t].find(">") != string::npos) { 
    866879                std::string data2; 
    867                 _data_DB->command="SELECT "; 
    868                 _data_DB->command.append(_data_DB->tablename); 
    869                 _data_DB->command.append(".* from "); 
    870                 _data_DB->command.append(_data_DB->tablename); 
    871                 _data_DB->command.append(" where Tag=='"); 
    872                 _data_DB->command.append(miss[activeMission].services[i].output[t].erase(0, 1)); 
    873                 _data_DB->command.append("';"); 
     880                data_DB->command="SELECT "; 
     881                data_DB->command.append(data_DB->tablename); 
     882                data_DB->command.append(".* from "); 
     883                data_DB->command.append(data_DB->tablename); 
     884                data_DB->command.append(" where Tag=='"); 
     885                data_DB->command.append(miss[activeMission].services[i].output[t].erase(0, 1)); 
     886                data_DB->command.append("';"); 
    874887                sqlite3_stmt *pStatement; 
    875888 
    876                 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), \ 
     889                rc = sqlite3_prepare_v2(data_DB->db, data_DB->command.c_str(), \ 
    877890                        -1, &pStatement, NULL); 
    878891                if(rc == SQLITE_OK) {  
     
    885898                } else { 
    886899                    WARNING("data_DB:: Error executing SQL statement. rc = %i\n%s\n", \ 
    887                             rc, _data_DB->command.c_str()); 
     900                            rc, data_DB->command.c_str()); 
    888901                } 
    889902 
     
    907920                            if(!miss[activeMission].services[k].output[t].empty()) { 
    908921                                input = miss[activeMission].services[k - numstatements[1] - 1].output[t]; 
    909                                 _data_DB->command="SELECT "; 
    910                                 _data_DB->command.append(_data_DB->tablename); 
    911                                 _data_DB->command.append(".* from "); 
    912                                 _data_DB->command.append(_data_DB->tablename); 
    913                                 _data_DB->command.append(" where Tag=='"); 
    914                                 _data_DB->command.append(input); 
    915                                 _data_DB->command.append("';"); 
     922                                data_DB->command="SELECT "; 
     923                                data_DB->command.append(data_DB->tablename); 
     924                                data_DB->command.append(".* from "); 
     925                                data_DB->command.append(data_DB->tablename); 
     926                                data_DB->command.append(" where Tag=='"); 
     927                                data_DB->command.append(input); 
     928                                data_DB->command.append("';"); 
    916929 
    917930                                sqlite3_stmt *pStatement; 
    918                                 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), \ 
     931                                rc = sqlite3_prepare_v2(data_DB->db, data_DB->command.c_str(), \ 
    919932                                        -1, &pStatement, NULL); 
    920933                                if(rc == SQLITE_OK) {  
     
    927940                                } else { 
    928941                                    WARNING("data_DB:: Error executing SQL statement. rc = %i\n%s\n", \ 
    929                                             rc,_data_DB->command.c_str()); 
     942                                            rc,data_DB->command.c_str()); 
    930943                                } 
    931944 
     
    941954                        if(miss[activeMission].services[k].output[t].find(">") != string::npos) { 
    942955                            std::string data2; 
    943                             _data_DB->command="SELECT "; 
    944                             _data_DB->command.append(_data_DB->tablename); 
    945                             _data_DB->command.append(".* from "); 
    946                             _data_DB->command.append(_data_DB->tablename); 
    947                             _data_DB->command.append(" where Tag=='"); 
    948                             _data_DB->command.append(miss[activeMission].services[k].output[t].erase(0, 1)); 
    949                             _data_DB->command.append("';"); 
     956                            data_DB->command="SELECT "; 
     957                            data_DB->command.append(data_DB->tablename); 
     958                            data_DB->command.append(".* from "); 
     959                            data_DB->command.append(data_DB->tablename); 
     960                            data_DB->command.append(" where Tag=='"); 
     961                            data_DB->command.append(miss[activeMission].services[k].output[t].erase(0, 1)); 
     962                            data_DB->command.append("';"); 
    950963 
    951964                            sqlite3_stmt *pStatement; 
    952                             rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), \ 
     965                            rc = sqlite3_prepare_v2(data_DB->db, data_DB->command.c_str(), \ 
    953966                                    -1, &pStatement, NULL); 
    954967                            if(rc == SQLITE_OK) {  
     
    961974                            } else { 
    962975                                WARNING("data_DB:: Error executing SQL statement. rc = %i\n%s\n", \ 
    963                                         rc, _data_DB->command.c_str()); 
     976                                        rc, data_DB->command.c_str()); 
    964977                            } 
    965978 
     
    983996                                            input = miss[activeMission].services[j - numstatements[2] - 1].output[t]; 
    984997 
    985                                             _data_DB->command="SELECT "; 
    986                                             _data_DB->command.append(_data_DB->tablename); 
    987                                             _data_DB->command.append(".* from "); 
    988                                             _data_DB->command.append(_data_DB->tablename); 
    989                                             _data_DB->command.append(" where Tag=='"); 
    990                                             _data_DB->command.append(input); 
    991                                             _data_DB->command.append("';"); 
     998                                            data_DB->command="SELECT "; 
     999                                            data_DB->command.append(data_DB->tablename); 
     1000                                            data_DB->command.append(".* from "); 
     1001                                            data_DB->command.append(data_DB->tablename); 
     1002                                            data_DB->command.append(" where Tag=='"); 
     1003                                            data_DB->command.append(input); 
     1004                                            data_DB->command.append("';"); 
    9921005 
    9931006                                            sqlite3_stmt *pStatement; 
    9941007 
    995                                             rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), -1, &pStatement, NULL); 
     1008                                            rc = sqlite3_prepare_v2(data_DB->db, data_DB->command.c_str(), -1, &pStatement, NULL); 
    9961009                                            if(rc == SQLITE_OK) {  
    9971010                                                if(sqlite3_step(pStatement) == SQLITE_ROW) 
     
    10031016                                            } else { 
    10041017                                                WARNING("data_DB:: Error executing SQL statement. rc = %i\n%s\n", \ 
    1005                                                         rc, _data_DB->command.c_str()); 
     1018                                                        rc, data_DB->command.c_str()); 
    10061019                                            } 
    10071020 
     
    10171030                                    bool doit = false; 
    10181031                                    if(miss[activeMission].services[j].output[t].find(">") != string::npos) { 
    1019                                         _data_DB->command="SELECT "; 
    1020                                         _data_DB->command.append(_data_DB->tablename); 
    1021                                         _data_DB->command.append(".* from "); 
    1022                                         _data_DB->command.append(_data_DB->tablename); 
    1023                                         _data_DB->command.append(" where Tag=='"); 
    1024                                         _data_DB->command.append(miss[activeMission].services[j].output[t].erase(0, 1)); 
    1025                                         _data_DB->command.append("';"); 
     1032                                        data_DB->command="SELECT "; 
     1033                                        data_DB->command.append(data_DB->tablename); 
     1034                                        data_DB->command.append(".* from "); 
     1035                                        data_DB->command.append(data_DB->tablename); 
     1036                                        data_DB->command.append(" where Tag=='"); 
     1037                                        data_DB->command.append(miss[activeMission].services[j].output[t].erase(0, 1)); 
     1038                                        data_DB->command.append("';"); 
    10261039 
    10271040                                        sqlite3_stmt *pStatement; 
    1028                                         rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), -1, &pStatement, NULL); 
     1041                                        rc = sqlite3_prepare_v2(data_DB->db, data_DB->command.c_str(), -1, &pStatement, NULL); 
    10291042                                        if(rc == SQLITE_OK) {  
    10301043                                            if(sqlite3_step(pStatement) == SQLITE_ROW) 
     
    10361049                                        } else { 
    10371050                                            WARNING("data_DB:: Error executing SQL statement. rc = %i\n%s\n", \ 
    1038                                                     rc, _data_DB->command.c_str()); 
     1051                                                    rc, data_DB->command.c_str()); 
    10391052                                        } 
    10401053 
     
    10791092                                            if(!miss[activeMission].services[j].output[t].empty()){ 
    10801093                                                input=miss[activeMission].services[l-2].output[t]; 
    1081                                                 _data_DB->command="SELECT "; 
    1082                                                 _data_DB->command.append(_data_DB->tablename); 
    1083                                                 _data_DB->command.append(".* from "); 
    1084                                                 _data_DB->command.append(_data_DB->tablename); 
    1085                                                 _data_DB->command.append(" where Tag=='"); 
    1086                                                 _data_DB->command.append(input); 
    1087                                                 _data_DB->command.append("';"); 
     1094                                                data_DB->command="SELECT "; 
     1095                                                data_DB->command.append(data_DB->tablename); 
     1096                                                data_DB->command.append(".* from "); 
     1097                                                data_DB->command.append(data_DB->tablename); 
     1098                                                data_DB->command.append(" where Tag=='"); 
     1099                                                data_DB->command.append(input); 
     1100                                                data_DB->command.append("';"); 
    10881101                                                sqlite3_stmt *pStatement; 
    10891102 
    1090                                                 rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), -1, &pStatement, NULL); 
     1103                                                rc = sqlite3_prepare_v2(data_DB->db, data_DB->command.c_str(), -1, &pStatement, NULL); 
    10911104                                                if(rc == SQLITE_OK){  
    10921105                                                    if(sqlite3_step(pStatement) == SQLITE_ROW) 
    10931106                                                         data = (const char *) sqlite3_column_text(pStatement, 1);  
    10941107                                                    else { 
    1095                                                         WARNING("7 data_DB:: Data not yet in DB.: %s\n", _data_DB->command.c_str()); 
     1108                                                        WARNING("7 data_DB:: Data not yet in DB.: %s\n", data_DB->command.c_str()); 
    10961109                                                        rc = 31337; 
    10971110                                                    } 
    10981111                                                } else { 
    10991112                                                    WARNING("data_DB:: SQL statement error. rc = %i\n%s\n", \ 
    1100                                                             rc, _data_DB->command.c_str()); 
     1113                                                            rc, data_DB->command.c_str()); 
    11011114                                                } 
    11021115 
     
    11391152                                if(!miss[activeMission].services[k].output[t].empty()) { 
    11401153                                    input = miss[activeMission].services[j - 1].output[t]; 
    1141                                     _data_DB->command="SELECT "; 
    1142                                     _data_DB->command.append(_data_DB->tablename); 
    1143                                     _data_DB->command.append(".* from "); 
    1144                                     _data_DB->command.append(_data_DB->tablename); 
    1145                                     _data_DB->command.append(" where Tag=='"); 
    1146                                     _data_DB->command.append(input); 
    1147                                     _data_DB->command.append("';"); 
     1154                                    data_DB->command="SELECT "; 
     1155                                    data_DB->command.append(data_DB->tablename); 
     1156                                    data_DB->command.append(".* from "); 
     1157                                    data_DB->command.append(data_DB->tablename); 
     1158                                    data_DB->command.append(" where Tag=='"); 
     1159                                    data_DB->command.append(input); 
     1160                                    data_DB->command.append("';"); 
    11481161 
    11491162                                    sqlite3_stmt *pStatement; 
    1150                                     rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), -1, &pStatement, NULL); 
     1163                                    rc = sqlite3_prepare_v2(data_DB->db, data_DB->command.c_str(), -1, &pStatement, NULL); 
    11511164                                    if(rc == SQLITE_OK) {  
    11521165                                        if(sqlite3_step(pStatement) == SQLITE_ROW) 
     
    11581171                                    } else { 
    11591172                                        WARNING("data_DB:: Error executing SQL statement. rc = %i\n%s\n", \ 
    1160                                                 rc, _data_DB->command.c_str()); 
     1173                                                rc, data_DB->command.c_str()); 
    11611174                                    } 
    11621175 
     
    11991212                    if(!miss[activeMission].services[i].output[t].empty()) { 
    12001213                        input = miss[activeMission].services[k - 1].output[t]; 
    1201                         _data_DB->command="SELECT "; 
    1202                         _data_DB->command.append(_data_DB->tablename); 
    1203                         _data_DB->command.append(".* from "); 
    1204                         _data_DB->command.append(_data_DB->tablename); 
    1205                         _data_DB->command.append(" where Tag=='"); 
    1206                         _data_DB->command.append(input); 
    1207                         _data_DB->command.append("';"); 
     1214                        data_DB->command="SELECT "; 
     1215                        data_DB->command.append(data_DB->tablename); 
     1216                        data_DB->command.append(".* from "); 
     1217                        data_DB->command.append(data_DB->tablename); 
     1218                        data_DB->command.append(" where Tag=='"); 
     1219                        data_DB->command.append(input); 
     1220                        data_DB->command.append("';"); 
    12081221 
    12091222                        sqlite3_stmt *pStatement; 
    1210                         rc = sqlite3_prepare_v2(_data_DB->db, _data_DB->command.c_str(), -1, &pStatement, NULL); 
     1223                        rc = sqlite3_prepare_v2(data_DB->db, data_DB->command.c_str(), -1, &pStatement, NULL); 
    12111224                        if(rc == SQLITE_OK) {  
    12121225                            if(sqlite3_step(pStatement) == SQLITE_ROW) 
     
    12181231                        } else { 
    12191232                            WARNING("data_DB:: Error executing SQL statement. rc = %i\n%s\n", \ 
    1220                                     rc, _data_DB->command.c_str()); 
     1233                                    rc, data_DB->command.c_str()); 
    12211234                        } 
    12221235 
     
    12441257    data.clear(); 
    12451258 
    1246     if(!shellFound) { 
     1259    if(!shellUsed) { 
    12471260        int k = 0; 
    12481261        while(k < 10 && !miss[activeMission].input[k].empty()) { 
     
    12721285ServiceManagementLayer::ListServices() 
    12731286{ 
    1274     _services_DB->command="select "; 
    1275     _services_DB->command.append(_services_DB->tablename); 
    1276     _services_DB->command.append(".* from "); 
    1277     _services_DB->command.append(_services_DB->tablename); 
    1278     _services_DB->command.append(";"); 
     1287    services_DB->command="select "; 
     1288    services_DB->command.append(services_DB->tablename); 
     1289    services_DB->command.append(".* from "); 
     1290    services_DB->command.append(services_DB->tablename); 
     1291    services_DB->command.append(";"); 
    12791292 
    12801293    // Execute print (select all) command 
    12811294    char *errorMsg; 
    1282     int32_t rc = sqlite3_exec(_services_DB->db, _services_DB->command.c_str(), callback, 0, &errorMsg); 
     1295    int32_t rc = sqlite3_exec(services_DB->db, services_DB->command.c_str(), callback, 0, &errorMsg); 
    12831296    if((rc != SQLITE_OK) && (rc != 101)) 
    12841297        WARNING("SQL error: %s\n", errorMsg); 
    12851298 
    1286     LOG("database %s, table %s:\n", _services_DB->filename.c_str(), _services_DB->tablename.c_str()); 
     1299    LOG("database %s, table %s:\n", services_DB->filename.c_str(), services_DB->tablename.c_str()); 
    12871300} 
    12881301 
     
    15251538    memset(buffer, 0, 256); 
    15261539    ReadMessage(CE_List[ID].FD, buffer);  
    1527     _services_DB->command="DELETE FROM "; 
    1528     _services_DB->command.append(_services_DB->tablename); 
    1529     _services_DB->command.append(" WHERE ID_Num IN (SELECT "); 
     1540    services_DB->command="DELETE FROM "; 
     1541    services_DB->command.append(services_DB->tablename); 
     1542    services_DB->command.append(" WHERE ID_Num IN (SELECT "); 
    15301543 
    15311544    char tmp[3]; 
    15321545    memset(tmp,0,3); 
    15331546    sprintf(tmp, "%d", ID); 
    1534     _services_DB->command.append(tmp); 
    1535     _services_DB->command.append(" FROM "); 
    1536     _services_DB->command.append(_services_DB->tablename); 
    1537     _services_DB->command.append(" WHERE Service_Name"); 
    1538     _services_DB->command.append("=='"); 
    1539     _services_DB->command.append(buffer); 
    1540     _services_DB->command.append("');"); 
     1547    services_DB->command.append(tmp); 
     1548    services_DB->command.append(" FROM "); 
     1549    services_DB->command.append(services_DB->tablename); 
     1550    services_DB->command.append(" WHERE Service_Name"); 
     1551    services_DB->command.append("=='"); 
     1552    services_DB->command.append(buffer); 
     1553    services_DB->command.append("');"); 
    15411554 
    15421555    char *errorMsg; 
    1543     int32_t rc = sqlite3_exec(_services_DB->db, _services_DB->command.c_str(), callback, 0, &errorMsg); 
     1556    int32_t rc = sqlite3_exec(services_DB->db, services_DB->command.c_str(), callback, 0, &errorMsg); 
    15441557    if((rc != SQLITE_OK) && (rc != 101)) 
    15451558        WARNING("SQL error: %s\n", errorMsg); 
     
    15721585 
    15731586    //Deregister the services 
    1574     _services_DB->command="DELETE FROM "; 
    1575     _services_DB->command.append(_services_DB->tablename); 
    1576     _services_DB->command.append(" WHERE "); 
    1577     _services_DB->command.append("ID_Num"); 
    1578     _services_DB->command.append("=="); 
     1587    services_DB->command="DELETE FROM "; 
     1588    services_DB->command.append(services_DB->tablename); 
     1589    services_DB->command.append(" WHERE "); 
     1590    services_DB->command.append("ID_Num"); 
     1591    services_DB->command.append("=="); 
    15791592 
    15801593    char tmp[3]; 
    15811594    memset(tmp,0,3); 
    15821595    sprintf(tmp, "%d", ID); 
    1583     _services_DB->command.append(tmp); 
    1584     _services_DB->command.append(";"); 
     1596    services_DB->command.append(tmp); 
     1597    services_DB->command.append(";"); 
    15851598 
    15861599    char *errorMsg; 
    1587     int32_t rc = sqlite3_exec(_services_DB->db, _services_DB->command.c_str(), callback, 0, &errorMsg); 
     1600    int32_t rc = sqlite3_exec(services_DB->db, services_DB->command.c_str(), callback, 0, &errorMsg); 
    15881601    if((rc != SQLITE_OK) && (rc != 101)) 
    15891602        WARNING("SQL error: %s\n", errorMsg);