Changeset 222 for vtcross/trunk/src/shell/CognitiveRadioShell.cpp
- Timestamp:
- 03/30/09 21:38:53 (15 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
vtcross/trunk/src/shell/CognitiveRadioShell.cpp
r218 r222 125 125 // send utility 126 126 for(i = 0; i < radio_info->numUtilities; i++) { 127 SendMessage(socketfd, u [i].name.c_str());128 SendMessage(socketfd, u [i].units.c_str());129 SendMessage(socketfd, u [i].goal.c_str());130 sprintf(var,"%f", u [i].target);127 SendMessage(socketfd, utils[i].name.c_str()); 128 SendMessage(socketfd, utils[i].units.c_str()); 129 SendMessage(socketfd, utils[i].goal.c_str()); 130 sprintf(var,"%f", utils[i].target); 131 131 SendMessage(socketfd,var); 132 132 } … … 136 136 SendMessage(socketfd,counter); 137 137 for(i = 0; i < radio_info->numParameters; i++) { 138 SendMessage(socketfd,p [i].name.c_str());139 SendMessage(socketfd,p [i].units.c_str());140 sprintf(var,"%f",p [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",p [i].max);142 sprintf(var,"%f",params[i].max); 143 143 SendMessage(socketfd,var); 144 sprintf(var,"%f",p [i].step);144 sprintf(var,"%f",params[i].step); 145 145 SendMessage(socketfd,var); 146 146 147 sprintf(counter,"%i",p [i].numAffects);147 sprintf(counter,"%i",params[i].numAffects); 148 148 SendMessage(socketfd,counter); 149 for(j = 0; j < p [i].numAffects; j++) {150 SendMessage(socketfd,p [i].affection_list[j].u->name.c_str());151 SendMessage(socketfd,p [i].affection_list[j].relation.c_str());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()); 152 152 } 153 153 } … … 157 157 SendMessage(socketfd,counter); 158 158 for(i = 0; i < radio_info->numObservables; i++) { 159 SendMessage(socketfd,o [i].name.c_str());159 SendMessage(socketfd,observables[i].name.c_str()); 160 160 161 sprintf(counter,"%i",o [i].numAffects);161 sprintf(counter,"%i",observables[i].numAffects); 162 162 SendMessage(socketfd,counter); 163 for(j = 0; j < o [i].numAffects; j++) {164 SendMessage(socketfd,o [i].affection_list[j].u->name.c_str());165 SendMessage(socketfd,o [i].affection_list[j].relation.c_str());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()); 166 166 } 167 167 } … … 186 186 LOG("Cognitive Radio Shell:: Sending radio experience to Cognitive Engine.\n"); 187 187 int32_t numberExp = 4; 188 189 std::string numberExpString = numberExp; 190 SendMessage(socketFD, numberExp); 188 char numberExpString[50]; 189 190 sprintf(numberExpString,"%i",numberExp); 191 SendMessage(socketFD, numberExpString); 191 192 192 193 char buffer[256]; … … 451 452 CognitiveRadioShell::GetOptimalParameters(int32_t socketFD) 452 453 { 454 char buffer[256]; 455 uint32_t numObservables,numParameters; 456 char counter[55]; 457 uint16_t i; 458 char var[50]; 459 460 /* Receive Set of Observables */ 461 LOG("Cognitive Radio Shell:: Got request for optimization.\n"); 462 memset(buffer, 0, 256); 463 ReadMessage(commandSocketFD,buffer); 464 numObservables = atoi(buffer); 465 466 LOG("Cognitive Radio Shell:: Attempting to get %i observables.\n",numObservables); 467 Observable * o = new Observable[numObservables]; 468 469 for (i = 0; i < numObservables; i++){ 470 memset(buffer, 0, 256); 471 ReadMessage(commandSocketFD,buffer); 472 o[i].name = std::string(buffer); 473 474 memset(buffer, 0, 256); 475 ReadMessage(commandSocketFD,buffer); 476 o[i].value = atof(buffer); 477 } 478 479 /* Send to Cognitive Engine 480 * TODO: With multiple CEs we need to make a decision about where 481 * to send this information 482 */ 483 484 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); 492 } 493 494 495 LOG("Cognitive Radio Shell:: Receiving optimized parameters from Cognitive Engine.\n"); 496 /* Receive Set of Parameters */ 497 memset(buffer, 0, 256); 498 ReadMessage(ceSocketFD,buffer); 499 numParameters = atoi(buffer); 500 501 Parameter * p = new Parameter[numParameters]; 502 503 for (i = 0; i < numParameters; i++){ 504 memset(buffer, 0, 256); 505 ReadMessage(ceSocketFD,buffer); 506 LOG("socket_comm::Get Parameter - Name: %s\n", buffer); 507 p[i].name = std::string(buffer); 508 509 memset(buffer, 0, 256); 510 ReadMessage(ceSocketFD,buffer); 511 LOG("socket_comm::Get Parameter - Value: %s\n", buffer); 512 p[i].value = atof(buffer); 513 } 514 515 /* Send to Application 516 */ 517 LOG("Cognitive Radio Shell:: Sending optimized parameters to Application.\n"); 518 memset(counter, 0, 55); 519 sprintf(counter,"%i",numParameters); 520 SendMessage(commandSocketFD,counter); 521 for(i = 0; i < numParameters; i++) { 522 SendMessage(commandSocketFD,p[i].name.c_str()); 523 sprintf(var,"%f",p[i].value); 524 SendMessage(commandSocketFD,var); 525 } 453 526 } 454 527 … … 473 546 } else if(strcmp(buffer,"deregister_sml") == 0) { 474 547 DeregisterSML(socketFD); 475 } else if(strcmp(buffer," optimize") == 0) {548 } else if(strcmp(buffer,"request_optimization") == 0) { 476 549 /* Receive optimization request and current environment */ 477 550 GetOptimalParameters(socketFD); … … 499 572 servSock[command] = CreateTCPServerSocket(commandPort); 500 573 501 int32_t maxDescriptor = servSock[command]; 574 int32_t maxDescriptor; 575 576 if(servSock[primary] > servSock[policy]) 577 maxDescriptor = servSock[primary]; 578 else 579 maxDescriptor = servSock[policy]; 580 581 if(servSock[command] > maxDescriptor) 582 maxDescriptor = servSock[command]; 502 583 503 584 if(InitializeTCPServerPort(servSock[primary]) == -1) … … 540 621 if(new_sd < 0) 541 622 break; 542 623 624 if(port == servSock[primary]) 625 ceSocketFD = new_sd; 626 if(port == servSock[command]) 627 commandSocketFD = new_sd; 628 if(port == servSock[policy]) 629 policySocketFD = new_sd; 630 543 631 HandleMessage(new_sd); 544 632 FD_SET(new_sd,&sockSet);