Changeset 227
- Timestamp:
- 03/31/09 18:38:58 (15 years ago)
- Location:
- vtcross/trunk/src
- Files:
-
- 3 modified
Legend:
- Unmodified
- Added
- Removed
-
vtcross/trunk/src/lib/socketcomm/socketcomm.cpp
r222 r227 41 41 // Messages are termination with a "\0" to denote EOM. 42 42 ssize_t msgLength = recv(socketFD, msgBuffer, 256, MSG_PEEK); 43 if 43 if(msgLength < 0) 44 44 ERROR(1, "Error reading from socket.\n"); 45 if 45 if(msgLength == 0) 46 46 ERROR(1, "Remote component closed connection.\n"); 47 47 … … 54 54 // Read the message into msgBuffer 55 55 msgLength = recv(socketFD, msgBuffer, i + 1, 0); 56 if 56 if(msgLength < 0) 57 57 ERROR(1, "Error reading from socket.\n"); 58 if 58 if(msgLength == 0) 59 59 ERROR(1, "Remote component closed connection.\n"); 60 60 } -
vtcross/trunk/src/libvtcross/libvtcross.cpp
r226 r227 17 17 #include "vtcross/libvtcross.h" 18 18 19 19 20 uint32_t 20 21 ConnectToRemoteComponent() … … 26 27 } 27 28 29 28 30 /* Given a certain set of observables, ask the radio to find the optimum radio 29 31 * parameters and return them. … … 31 33 * TODO I'm a little confused about this function... why would anyone need to 32 34 * use this? Shouldn't this be internal to the radio operation? 35 * 36 * TODO this function is returning a pointer to allocated memory, which is fine, 37 * but we need to document this and make sure the caller is deallocating the 38 * memory when it is done using it. 33 39 */ 34 Parameter* GetOptimalParameters(Observable *radioObservables, uint32_t numObservables) { 35 uint32_t i,socketfd,numParameters; 40 Parameter* 41 GetOptimalParameters(Observable *radioObservables, uint32_t numObservables) 42 { 36 43 char var[50]; 37 44 char counter[55]; 38 45 char buffer[256]; 39 46 40 socketfd= ConnectToRemoteComponent();41 SendMessage(socket fd,"request_optimization");47 uint32_t socketFD = ConnectToRemoteComponent(); 48 SendMessage(socketFD, "request_optimization"); 42 49 43 50 /* Get number of observables to send. This information needs to be … … 46 53 47 54 // Send Observables 48 sprintf(counter, "%i",numObservables);49 SendMessage(socket fd,counter);50 for( i = 0; i < numObservables; i++) {51 SendMessage(socket fd,radioObservables[i].name.c_str());52 sprintf(var, "%f",radioObservables[i].value);53 SendMessage(socket fd,var);55 sprintf(counter, "%i", numObservables); 56 SendMessage(socketFD, counter); 57 for(size_t i = 0; i < numObservables; i++) { 58 SendMessage(socketFD, radioObservables[i].name.c_str()); 59 sprintf(var, "%f", radioObservables[i].value); 60 SendMessage(socketFD, var); 54 61 } 55 62 56 63 /* Receive Set of Parameters */ 57 64 memset(buffer, 0, 256); 58 ReadMessage(socket fd, buffer);59 numParameters = atoi(buffer);60 Parameter * 65 ReadMessage(socketFD, buffer); 66 int32_t numParameters = atoi(buffer); 67 Parameter *pList = new Parameter[numParameters]; 61 68 62 for(s ize_t i = 0; i < numParameters; i++) {69 for(ssize_t i = 0; i < numParameters; i++) { 63 70 memset(buffer, 0, 256); 64 ReadMessage(socket fd, buffer);71 ReadMessage(socketFD, buffer); 65 72 pList[i].name = std::string(buffer); 66 73 67 74 memset(buffer, 0, 256); 68 ReadMessage(socket fd, buffer);75 ReadMessage(socketFD, buffer); 69 76 pList[i].value = atof(buffer); 70 77 } … … 72 79 return pList; 73 80 } 81 -
vtcross/trunk/src/shell/CognitiveRadioShell.cpp
r223 r227 129 129 SendMessage(socketfd, utils[i].goal.c_str()); 130 130 sprintf(var,"%f", utils[i].target); 131 SendMessage(socketfd, var);131 SendMessage(socketfd, var); 132 132 } 133 133 … … 136 136 SendMessage(socketfd,counter); 137 137 for(i = 0; i < radio_info->numParameters; i++) { 138 SendMessage(socketfd, params[i].name.c_str());139 SendMessage(socketfd, params[i].units.c_str());140 sprintf(var, "%f",params[i].min);138 SendMessage(socketfd, params[i].name.c_str()); 139 SendMessage(socketfd, params[i].units.c_str()); 140 sprintf(var, "%f", params[i].min); 141 141 SendMessage(socketfd,var); 142 sprintf(var, "%f",params[i].max);143 SendMessage(socketfd, var);144 sprintf(var, "%f",params[i].step);145 SendMessage(socketfd, var);146 147 sprintf(counter, "%i",params[i].numAffects);148 SendMessage(socketfd, counter);142 sprintf(var, "%f", params[i].max); 143 SendMessage(socketfd, var); 144 sprintf(var, "%f", params[i].step); 145 SendMessage(socketfd, var); 146 147 sprintf(counter, "%i", params[i].numAffects); 148 SendMessage(socketfd, counter); 149 149 for(j = 0; j < params[i].numAffects; j++) { 150 SendMessage(socketfd, params[i].affection_list[j].u->name.c_str());151 SendMessage(socketfd, params[i].affection_list[j].relation.c_str());150 SendMessage(socketfd, params[i].affection_list[j].u->name.c_str()); 151 SendMessage(socketfd, params[i].affection_list[j].relation.c_str()); 152 152 } 153 153 } … … 155 155 // observables 156 156 sprintf(counter,"%i",radio_info->numObservables); 157 SendMessage(socketfd, counter);157 SendMessage(socketfd, counter); 158 158 for(i = 0; i < radio_info->numObservables; i++) { 159 SendMessage(socketfd, observables[i].name.c_str());159 SendMessage(socketfd, observables[i].name.c_str()); 160 160 161 sprintf(counter, "%i",observables[i].numAffects);162 SendMessage(socketfd, counter);161 sprintf(counter, "%i", observables[i].numAffects); 162 SendMessage(socketfd, counter); 163 163 for(j = 0; j < observables[i].numAffects; j++) { 164 SendMessage(socketfd, observables[i].affection_list[j].u->name.c_str());165 SendMessage(socketfd, observables[i].affection_list[j].relation.c_str());164 SendMessage(socketfd, observables[i].affection_list[j].u->name.c_str()); 165 SendMessage(socketfd, observables[i].affection_list[j].relation.c_str()); 166 166 } 167 167 } … … 173 173 174 174 if(strcmp(buffer, "receive_config_ack") != 0) { 175 LOG("Cognitive Radio Shell:: Unexpected response: %s\n", buffer);175 LOG("Cognitive Radio Shell:: Unexpected response: %s\n", buffer); 176 176 return 0; 177 177 } 178 178 179 return 1; 179 180 … … 453 454 { 454 455 char buffer[256]; 455 uint32_t numObservables,numParameters;456 456 char counter[55]; 457 uint16_t i;458 457 char var[50]; 459 458 … … 461 460 LOG("Cognitive Radio Shell:: Got request for optimization.\n"); 462 461 memset(buffer, 0, 256); 463 ReadMessage(commandSocketFD, buffer);464 numObservables = atoi(buffer);462 ReadMessage(commandSocketFD, buffer); 463 uint32_t numObservables = atoi(buffer); 465 464 466 LOG("Cognitive Radio Shell:: Attempting to get %i observables.\n", numObservables);467 Observable * 465 LOG("Cognitive Radio Shell:: Attempting to get %i observables.\n", numObservables); 466 Observable *o = new Observable[numObservables]; 468 467 469 for (i = 0; i < numObservables; i++){468 for(size_t i = 0; i < numObservables; i++) { 470 469 memset(buffer, 0, 256); 471 ReadMessage(commandSocketFD, buffer);470 ReadMessage(commandSocketFD, buffer); 472 471 o[i].name = std::string(buffer); 473 472 474 473 memset(buffer, 0, 256); 475 ReadMessage(commandSocketFD, buffer);474 ReadMessage(commandSocketFD, buffer); 476 475 o[i].value = atof(buffer); 477 476 } … … 483 482 484 483 LOG("Cognitive Radio Shell:: Passing on observables to Cognitive Engine\n"); 485 SendMessage(ceSocketFD, "get_solution");486 sprintf(counter, "%i",numObservables);487 SendMessage(ceSocketFD, counter);488 for( i = 0; i < numObservables; i++) {489 SendMessage(ceSocketFD, o[i].name.c_str());490 sprintf(var, "%f",o[i].value);491 SendMessage(ceSocketFD, var);484 SendMessage(ceSocketFD, "get_solution"); 485 sprintf(counter, "%i", numObservables); 486 SendMessage(ceSocketFD, counter); 487 for(size_t i = 0; i < numObservables; i++) { 488 SendMessage(ceSocketFD, o[i].name.c_str()); 489 sprintf(var, "%f", o[i].value); 490 SendMessage(ceSocketFD, var); 492 491 } 493 492 … … 496 495 /* Receive Set of Parameters */ 497 496 memset(buffer, 0, 256); 498 ReadMessage(ceSocketFD, buffer);499 numParameters = atoi(buffer);497 ReadMessage(ceSocketFD, buffer); 498 uint32_t numParameters = atoi(buffer); 500 499 501 Parameter * 500 Parameter *p = new Parameter[numParameters]; 502 501 503 for (i = 0; i < numParameters; i++){502 for(size_t i = 0; i < numParameters; i++) { 504 503 memset(buffer, 0, 256); 505 ReadMessage(ceSocketFD, buffer);504 ReadMessage(ceSocketFD, buffer); 506 505 p[i].name = std::string(buffer); 507 506 508 507 memset(buffer, 0, 256); 509 ReadMessage(ceSocketFD, buffer);508 ReadMessage(ceSocketFD, buffer); 510 509 p[i].value = atof(buffer); 511 510 } … … 515 514 LOG("Cognitive Radio Shell:: Sending optimized parameters to Application.\n"); 516 515 memset(counter, 0, 55); 517 sprintf(counter,"%i",numParameters); 518 SendMessage(commandSocketFD,counter); 519 for(i = 0; i < numParameters; i++) { 520 SendMessage(commandSocketFD,p[i].name.c_str()); 521 sprintf(var,"%f",p[i].value); 522 SendMessage(commandSocketFD,var); 523 } 516 sprintf(counter, "%i", numParameters); 517 SendMessage(commandSocketFD, counter); 518 for(size_t i = 0; i < numParameters; i++) { 519 SendMessage(commandSocketFD, p[i].name.c_str()); 520 sprintf(var, "%f", p[i].value); 521 SendMessage(commandSocketFD, var); 522 } 523 524 delete [] o; 525 delete [] p; 524 526 } 525 527 … … 532 534 ReadMessage(socketFD, buffer); 533 535 534 if(strcmp(buffer, "register_engine_cognitive") == 0) {536 if(strcmp(buffer, "register_engine_cognitive") == 0) { 535 537 RegisterCognitiveEngine(socketFD); 536 } else if(strcmp(buffer, "deregister_engine_cognitive") == 0) {538 } else if(strcmp(buffer, "deregister_engine_cognitive") == 0) { 537 539 DeregisterCognitiveEngine(socketFD); 538 } else if(strcmp(buffer, "register_engine_policy") == 0) {540 } else if(strcmp(buffer, "register_engine_policy") == 0) { 539 541 RegisterPolicyEngine(socketFD); 540 } else if(strcmp(buffer, "deregister_engine_policy") == 0) {542 } else if(strcmp(buffer, "deregister_engine_policy") == 0) { 541 543 DeregisterPolicyEngine(socketFD); 542 } else if(strcmp(buffer, "register_sml") == 0) {544 } else if(strcmp(buffer, "register_sml") == 0) { 543 545 RegisterSML(socketFD); 544 } else if(strcmp(buffer, "deregister_sml") == 0) {546 } else if(strcmp(buffer, "deregister_sml") == 0) { 545 547 DeregisterSML(socketFD); 546 } else if(strcmp(buffer, "request_optimization") == 0) {548 } else if(strcmp(buffer, "request_optimization") == 0) { 547 549 /* Receive optimization request and current environment */ 548 550 GetOptimalParameters(socketFD);