Changeset 222
- Timestamp:
- 03/30/09 21:38:53 (15 years ago)
- Location:
- vtcross/trunk/src
- Files:
-
- 1 added
- 9 modified
Legend:
- Unmodified
- Added
- Removed
-
vtcross/trunk/src/cognitive_engines/CognitiveEngine.cpp
r218 r222 88 88 { 89 89 char buffer[256]; 90 uint16_t i; 90 91 91 92 while(true) { … … 102 103 // switch on the integer value... 103 104 if(strcmp(buffer, "get_solution") == 0) { 104 105 105 106 /* Receive Set of Observables */ 107 LOG("Cognitive Engine:: Receiving observables.\n"); 108 109 memset(buffer, 0, 256); 110 ReadMessage(commandSocketFD,buffer); 111 uint32_t numObservables = atoi(buffer); 112 113 Observable * o = new Observable[numObservables]; 114 115 for (i = 0; i < numObservables; i++){ 116 memset(buffer, 0, 256); 117 ReadMessage(commandSocketFD,buffer); 118 o[i].name = std::string(buffer); 119 120 memset(buffer, 0, 256); 121 ReadMessage(commandSocketFD,buffer); 122 o[i].value = atof(buffer); 123 } 124 125 LOG("Cognitive Engine:: Sending Optimal Parameters.\n"); 126 SendMessage(commandSocketFD,"1"); 127 SendMessage(commandSocketFD,"txPower"); 128 SendMessage(commandSocketFD,"10"); 106 129 } 107 130 else if(strcmp(buffer, "query_component_type") == 0) { … … 266 289 memset(buffer, 0, 256); 267 290 ReadMessage(commandSocketFD,buffer); 268 LOG("socket_comm::Get Utility - Name: %s\n", buffer);269 291 uList[i].name = std::string(buffer); 270 292 … … 286 308 ReadMessage(commandSocketFD, buffer); 287 309 radioInfo->numParameters = atoi(buffer); 288 LOG("socket_comm::GetParameter - Number of parameters: %d\n", \289 radioInfo->numParameters);290 310 291 311 for(size_t i = 0; i < radioInfo->numParameters; i++) { 292 312 memset(buffer, 0, 256); 293 313 ReadMessage(commandSocketFD, buffer); 294 LOG("socket_comm::GetParameter - Name: %s\n", buffer);295 314 pList[i].name = std::string(buffer); 296 315 297 316 memset(buffer, 0, 256); 298 317 ReadMessage(commandSocketFD, buffer); 299 LOG("socket_comm::GetParameter - Units: %s\n", buffer);300 318 pList[i].units = std::string(buffer); 301 319 302 320 memset(buffer, 0, 256); 303 321 ReadMessage(commandSocketFD, buffer); 304 LOG("socket_comm::GetParameter - Min: %s\n", buffer);305 322 pList[i].min = atof(buffer); 306 323 307 324 memset(buffer, 0, 256); 308 325 ReadMessage(commandSocketFD, buffer); 309 LOG("socket_comm::GetParameter - Max: %s\n", buffer);310 326 pList[i].max = atof(buffer); 311 327 312 328 memset(buffer, 0, 256); 313 329 ReadMessage(commandSocketFD, buffer); 314 LOG("socket_comm::GetParameter - Step: %s\n", buffer);315 330 pList[i].step = atof(buffer); 316 331 317 332 memset(buffer, 0, 256); 318 333 ReadMessage(commandSocketFD,buffer); 319 LOG("socket_comm::GetParameter - Number of Affects: %s\n", buffer);320 334 pList[i].numAffects = atoi(buffer); 321 335 … … 323 337 memset(buffer, 0, 256); 324 338 ReadMessage(commandSocketFD,buffer); 325 LOG("socket_comm::GetParameter - Affect Name: %s\n", buffer);326 339 for (k = 0; k < radioInfo->numUtilities; k++){ 327 340 if(uList[k].name == std::string(buffer)){ … … 333 346 memset(buffer, 0, 256); 334 347 ReadMessage(commandSocketFD,buffer); 335 LOG("socket_comm::GetParameter - Affect Relation: %s\n", buffer);336 348 pList[i].affection_list[j].relation = std::string(buffer); 337 349 } … … 346 358 memset(buffer, 0, 256); 347 359 ReadMessage(commandSocketFD,buffer); 348 LOG("socket_comm::Get Observable - Name: %s\n", buffer);349 360 oList[i].name = std::string(buffer); 350 361 351 362 memset(buffer, 0, 256); 352 363 ReadMessage(commandSocketFD,buffer); 353 LOG("socket_comm::Get Observable - Number Affects: %s\n", buffer);354 364 oList[i].numAffects = atoi(buffer); 355 365 … … 357 367 memset(buffer, 0, 256); 358 368 ReadMessage(commandSocketFD,buffer); 359 LOG("socket_comm::Get Observable - Affect Name: %s\n", buffer);360 369 for (k = 0; k < radioInfo->numUtilities; k++){ 361 370 if(uList[k].name == std::string(buffer)){ … … 367 376 memset(buffer, 0, 256); 368 377 ReadMessage(commandSocketFD,buffer); 369 LOG("socket_comm::Get Observable - Affect Relation: %s\n", buffer);370 378 oList[i].affection_list[j].relation = std::string(buffer); 371 379 } -
vtcross/trunk/src/cognitive_engines/cbr_demo.cpp
r218 r222 35 35 LOG("Waiting for signal...\n"); 36 36 while(1) { 37 //cognitiveEngine.WaitForSignal();37 cognitiveEngine.WaitForSignal(); 38 38 } 39 39 -
vtcross/trunk/src/include/vtcross/components.h
r217 r222 353 353 int16_t commandPort; 354 354 355 int32_t ceSocketFD; 356 int32_t commandSocketFD; 357 int32_t policySocketFD; 358 355 359 Utility *utils; 356 360 Parameter *params; -
vtcross/trunk/src/include/vtcross/containers.h
r221 r222 81 81 * 82 82 */ 83 struct Service { 84 std::string name; 85 uint16_t socketFD; 86 }; 87 88 89 /* TODO 90 * 91 */ 83 92 struct Mission { 84 93 std::string name; … … 88 97 }; 89 98 90 91 /* TODO92 *93 */94 struct Service {95 std::string name;96 uint16_t socketFD;97 };98 99 99 #endif -
vtcross/trunk/src/include/vtcross/libvtcross.h
r196 r222 46 46 * functions will still be valid by the time the client code receives them. 47 47 */ 48 Observable s* GetRadioObservables();49 Parameter s* GetRadioParameters();50 Utilit ies* GetRadioUtilities();48 Observable* GetRadioObservables(); 49 Parameter* GetRadioParameters(); 50 Utility* GetRadioUtilities(); 51 51 52 52 … … 76 76 * use this? Shouldn't this be internal to the radio operation? 77 77 */ 78 Parameter s* GetOptimalParameters(Observables *radioObservables);78 Parameter* GetOptimalParameters(Observable *radioObservables, uint32_t numObservables); 79 79 80 80 … … 85 85 * radio's performance? 86 86 */ 87 bool UpdateParameterPerformance(Parameter s*radioParameters, \88 Observable s *radioObservables, Utilies*radioUtilies);87 bool UpdateParameterPerformance(Parameter *radioParameters, \ 88 Observable *radioObservables, Utility *radioUtilies); 89 89 90 90 -
vtcross/trunk/src/lib/socketcomm/socketcomm.cpp
r219 r222 41 41 // Messages are termination with a "\0" to denote EOM. 42 42 ssize_t msgLength = recv(socketFD, msgBuffer, 256, MSG_PEEK); 43 if (msgLength < 0) 44 ERROR(1, "Error reading from socket.\n"); 45 if (msgLength == 0) 46 ERROR(1, "Remote component closed connection.\n"); 43 47 44 48 size_t i; … … 51 55 msgLength = recv(socketFD, msgBuffer, i + 1, 0); 52 56 if (msgLength < 0) 53 ERROR(1, "Error reading from socket"); 57 ERROR(1, "Error reading from socket.\n"); 58 if (msgLength == 0) 59 ERROR(1, "Remote component closed connection.\n"); 54 60 } 55 61 … … 66 72 server = gethostbyname(serverName); 67 73 if(server == NULL) 68 ERROR(1, "No server found by that hostname. ");74 ERROR(1, "No server found by that hostname.\n"); 69 75 70 76 portNumber = atoi(serverPort); … … 72 78 socketFD = socket(AF_INET, SOCK_STREAM, 0); 73 79 if(socketFD < 0) 74 ERROR(1, "Error opening socket ");80 ERROR(1, "Error opening socket\n"); 75 81 76 82 memset((void *) &serv_addr, 0, sizeof(serv_addr)); … … 81 87 82 88 if(connect(socketFD, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) 83 ERROR(1, "Error connecting to remote socket. ");89 ERROR(1, "Error connecting to remote socket.\n"); 84 90 85 91 return socketFD; … … 117 123 { 118 124 ssize_t numSentBytes = send(socketFD, message, (strlen(message) + 1), 0); 119 120 ERROR(1, "Error sending to server. ");125 if(numSentBytes < 0) { 126 ERROR(1, "Error sending to server.\n"); 121 127 } 122 128 else if(numSentBytes == 0) { … … 210 216 int32_t clientSocket = accept(serverSock, NULL, NULL); 211 217 if(clientSocket < 0) { 212 WARNING("ALERT: Could not establish connection with client socket.\n");218 //WARNING("ALERT: Could not establish connection with client socket.\n"); 213 219 return -1; 214 220 } -
vtcross/trunk/src/libvtcross/Makefile.am
r161 r222 1 INCLUDES = -I$(top_srcdir)/src/include 2 3 lib_LTLIBRARIES = libvtcross.la 4 bin_PROGRAMS = libvtcross_demo 5 6 libvtcross_la_SOURCES = libvtcross.cpp 7 libvtcross_la_LDFLAGS = -version-info 1:0:0 8 libvtcross_la_LIBADD = ../lib/socketcomm/libsocketcomm.a 9 10 libvtcross_demo_SOURCES = libvtcross_demo.cpp 11 libvtcross_demo_LDADD = libvtcross.la -
vtcross/trunk/src/libvtcross/libvtcross.cpp
r161 r222 13 13 #include "vtcross/libvtcross.h" 14 14 #include "vtcross/common.h" 15 #include "vtcross/debug.h" 15 16 17 uint32_t 18 ConnectToRemoteComponent() 19 { 20 uint32_t socket; 21 socket = ClientSocket("localhost", "40000"); 22 23 return socket; 24 } 25 26 /* Given a certain set of observables, ask the radio to find the optimum radio 27 * parameters and return them. 28 * 29 * TODO I'm a little confused about this function... why would anyone need to 30 * use this? Shouldn't this be internal to the radio operation? 31 */ 32 Parameter* GetOptimalParameters(Observable *radioObservables, uint32_t numObservables) { 33 uint32_t i,socketfd,numParameters; 34 char var[50]; 35 char counter[55]; 36 char buffer[256]; 37 38 socketfd = ConnectToRemoteComponent(); 39 SendMessage(socketfd,"request_optimization"); 40 41 /* Get number of observables to send. This information needs to be 42 * sent to the Cognitive Radio Shell also. 43 */ 44 45 // Send Observables 46 sprintf(counter,"%i",numObservables); 47 SendMessage(socketfd,counter); 48 for(i = 0; i < numObservables; i++) { 49 SendMessage(socketfd,radioObservables[i].name.c_str()); 50 sprintf(var,"%f",radioObservables[i].value); 51 SendMessage(socketfd,var); 52 } 53 54 /* Receive Set of Parameters */ 55 memset(buffer, 0, 256); 56 ReadMessage(socketfd, buffer); 57 numParameters = atoi(buffer); 58 Parameter * pList = new Parameter[numParameters]; 59 60 for(size_t i = 0; i < numParameters; i++) { 61 memset(buffer, 0, 256); 62 ReadMessage(socketfd, buffer); 63 pList[i].name = std::string(buffer); 64 65 memset(buffer, 0, 256); 66 ReadMessage(socketfd, buffer); 67 pList[i].value = atof(buffer); 68 } 69 70 return pList; 71 } -
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);