Changeset 195
- Timestamp:
- 03/23/09 21:38:08 (15 years ago)
- Location:
- vtcross/trunk/src
- Files:
-
- 6 modified
Legend:
- Unmodified
- Added
- Removed
-
vtcross/trunk/src/include/vtcross/components.h
r194 r195 205 205 * of transmission parameters. 206 206 */ 207 void SendPEDecision(struct Parameter pList[], struct CE_Info *ce_info, \207 void SendPEDecision(struct Parameter pList[], struct Radio_Info *radio_info, \ 208 208 int32_t decision_array[]); 209 209 -
vtcross/trunk/src/include/vtcross/containers.h
r187 r195 21 21 * 22 22 */ 23 struct CE_Info {23 struct Radio_Info { 24 24 uint32_t numUtilities; 25 25 uint32_t numParameters; -
vtcross/trunk/src/include/vtcross/socketcomm.h
r187 r195 30 30 */ 31 31 int32_t GetParameter(int32_t socketFD, struct Parameter pList[], \ 32 struct CE_Info *ce_info);32 struct Radio_Info *radio_info); 33 33 34 34 … … 36 36 */ 37 37 int32_t GetRequest(int32_t socketFD, struct Parameter pList[], \ 38 struct CE_Info *ce_info);38 struct Radio_Info *radio_info); 39 39 40 40 … … 58 58 */ 59 59 void HandleTCPClient(int32_t socketfd, Utility* uList[], Parameter* pList[], \ 60 Observable* oList[], CE_Info* ce_info);60 Observable* oList[], Radio_Info* radio_info); 61 61 62 62 #endif -
vtcross/trunk/src/lib/socketcomm/socketcomm.cpp
r190 r195 28 28 // TODO can someone write a description of how this function is operating? I'm 29 29 // not sure I understand why it is making two separate blocking calls to recv 30 // 31 // TODO also, it appears that this function can, at maximum, receive 256 bytes 32 // without causing a buffer overflow. can someone confirm/deny? 30 33 void 31 34 ReadMessage(int32_t socketFD, char* msgBuffer) … … 123 126 int32_t 124 127 GetParameter(int32_t socketFD, struct Parameter pList[], \ 125 struct CE_Info *ce_info)128 struct Radio_Info *radio_info) 126 129 { 127 130 char buffer[256]; … … 129 132 130 133 ReadMessage(socketFD, buffer); 131 ce_info->numParameters = atoi(buffer);134 radio_info->numParameters = atoi(buffer); 132 135 LOG("socket_comm::GetParameter - Number of parameters: %d\n", \ 133 ce_info->numParameters);134 135 for(size_t i = 0; i < ce_info->numParameters; i++) {136 radio_info->numParameters); 137 138 for(size_t i = 0; i < radio_info->numParameters; i++) { 136 139 memset(buffer, 0, 256); 137 140 ReadMessage(socketFD, buffer); … … 172 175 // instead of an entire 32 bit integer? Seems wasteful. 173 176 int32_t 174 GetRequest(int32_t socketFD, struct Parameter pList[], struct CE_Info *ce_info)177 GetRequest(int32_t socketFD, struct Parameter pList[], struct Radio_Info *radio_info) 175 178 { 176 179 char buffer[256]; … … 185 188 186 189 LOG("socket_comm::GetRequest - Getting parameters.\n\n"); 187 GetParameter(socketFD, pList, ce_info);190 GetParameter(socketFD, pList, radio_info); 188 191 189 192 return 1; -
vtcross/trunk/src/policy_engines/PolicyEngine.cpp
r194 r195 230 230 void 231 231 PolicyEngine::SendPEDecision(struct Parameter pList[], \ 232 struct CE_Info *ce_info, int32_t decision_array[])232 struct Radio_Info *radio_info, int32_t decision_array[]) 233 233 { 234 234 char var[50]; 235 235 236 for (size_t i = 0; i < ce_info->numParameters; i++) {236 for (size_t i = 0; i < radio_info->numParameters; i++) { 237 237 sprintf(var, "%i", decision_array[i]); 238 238 SendMessage(commandSocketFD, var); … … 248 248 int32_t decision_array[10]; 249 249 struct Parameter pList[10]; 250 struct CE_Info ce_info;251 252 if(GetRequest(commandSocketFD, pList, & ce_info)) {250 struct Radio_Info radio_info; 251 252 if(GetRequest(commandSocketFD, pList, &radio_info)) { 253 253 LOG("Policy Engine:: Validating Transmission Parameters.\n"); 254 for (size_t i = 0; i < ce_info.numParameters; i++)254 for (size_t i = 0; i < radio_info.numParameters; i++) 255 255 decision_array[i] = 1; 256 256 257 257 LOG("Policy Engine:: Sending Policy decision to Server.\n"); 258 SendPEDecision(pList, & ce_info, decision_array);258 SendPEDecision(pList, &radio_info, decision_array); 259 259 260 260 LOG("Policy Engine:: Policies Validated.\n"); -
vtcross/trunk/src/shell/cr_shell.cpp
r181 r195 40 40 void 41 41 print_current_config(Utility* uList[], Parameter* pList[], \ 42 Observable* oList[], CE_Info* ce_info)43 { 44 for(size_t i = 0; i < ce_info->numUtilities ; i++) {42 Observable* oList[], Radio_Info* radio_info) 43 { 44 for(size_t i = 0; i < radio_info->numUtilities ; i++) { 45 45 LOG("Shell:: Utility: %s\n\tUnits: %s\n\tGoal: %s\n\tTarget: %f\n", \ 46 46 uList[i]->name.c_str(), uList[i]->units.c_str(), \ … … 48 48 } 49 49 50 for(size_t i = 0; i < ce_info->numParameters; i++) {50 for(size_t i = 0; i < radio_info->numParameters; i++) { 51 51 LOG("Shell:: Radio Operation Profile has been sucessfully sent.\n"); 52 52 LOG("Shell:: Parameter: %s\n\tUnits: %s\n\tMin: %f\n\t", \ … … 61 61 } 62 62 63 for(size_t i = 0; i < ce_info->numObservables; i++) {63 for(size_t i = 0; i < radio_info->numObservables; i++) { 64 64 LOG("Observable: %s\n", oList[i]->name.c_str()); 65 65 … … 79 79 int32_t 80 80 parse_ce_config(TiXmlDocument* doc, Utility* u[], Parameter* p[], \ 81 Observable* o[], CE_Info* ce_info)81 Observable* o[], Radio_Info* radio_info) 82 82 { 83 83 … … 128 128 } 129 129 130 ce_info->numUtilities = item_count;131 LOG("Initialize:: Parsed %d utilities.\n", ce_info->numUtilities);130 radio_info->numUtilities = item_count; 131 LOG("Initialize:: Parsed %d utilities.\n", radio_info->numUtilities); 132 132 133 133 item_count = 0; … … 176 176 } 177 177 178 ce_info->numObservables = item_count;179 LOG("Initialize:: Parsed %d observables.\n", ce_info->numObservables);178 radio_info->numObservables = item_count; 179 LOG("Initialize:: Parsed %d observables.\n", radio_info->numObservables); 180 180 181 181 pElem = hRoot.FirstChild("parameters").Element(); … … 240 240 } 241 241 242 ce_info->numParameters = item_count;243 LOG("Initialize:: Parsed %d parameters.\n", ce_info->numParameters);242 radio_info->numParameters = item_count; 243 LOG("Initialize:: Parsed %d parameters.\n", radio_info->numParameters); 244 244 245 245 return 1; … … 249 249 void 250 250 LoadCEConfiguration(int32_t socketfd,Utility* uList[], Parameter* pList[], \ 251 Observable* oList[], CE_Info* ce_info)251 Observable* oList[], Radio_Info* radio_info) 252 252 { 253 253 int32_t n,i,j; … … 260 260 // utilities 261 261 // Send number of utilities 262 sprintf(counter,"%d", ce_info->numUtilities);262 sprintf(counter,"%d",radio_info->numUtilities); 263 263 SendMessage(socketfd,counter); 264 264 // send utility 265 for(i = 0; i < ce_info->numUtilities; i++) {265 for(i = 0; i < radio_info->numUtilities; i++) { 266 266 SendMessage(socketfd, uList[i]->name.c_str()); 267 267 SendMessage(socketfd, uList[i]->units.c_str()); … … 272 272 273 273 // parameters 274 sprintf(counter,"%i", ce_info->numParameters);274 sprintf(counter,"%i",radio_info->numParameters); 275 275 SendMessage(socketfd,counter); 276 for(i = 0; i < ce_info->numParameters; i++) {276 for(i = 0; i < radio_info->numParameters; i++) { 277 277 SendMessage(socketfd,pList[i]->name.c_str()); 278 278 SendMessage(socketfd,pList[i]->units.c_str()); … … 293 293 294 294 // observables 295 sprintf(counter,"%i", ce_info->numObservables);295 sprintf(counter,"%i",radio_info->numObservables); 296 296 SendMessage(socketfd,counter); 297 for(i = 0; i < ce_info->numObservables; i++) {297 for(i = 0; i < radio_info->numObservables; i++) { 298 298 SendMessage(socketfd,oList[i]->name.c_str()); 299 299 … … 351 351 352 352 int32_t 353 RequestPolicyValidation(Parameter * pList[], CE_Info *ce_info)353 RequestPolicyValidation(Parameter * pList[], Radio_Info *radio_info) 354 354 { 355 355 char counter[55]; … … 358 358 char* control_msg = "val"; 359 359 360 int32_t socketfd = ce_info->policy_socket;360 int32_t socketfd = radio_info->policy_socket; 361 361 362 362 // Control message that validation request is coming … … 366 366 367 367 // Send parameter information 368 sprintf(counter,"%i", ce_info->numParameters);368 sprintf(counter,"%i",radio_info->numParameters); 369 369 SendMessage(socketfd,counter); 370 for(i = 0; i < ce_info->numParameters; i++) {370 for(i = 0; i < radio_info->numParameters; i++) { 371 371 SendMessage(socketfd,pList[i]->name.c_str()); 372 372 SendMessage(socketfd,pList[i]->units.c_str()); … … 389 389 RequestCEOptimization(int32_t sockfd, Utility *uList[], 390 390 Parameter *pList[], Observable *oList[], 391 CE_Info *ce_info)391 Radio_Info *radio_info) 392 392 { 393 393 char buffer[256]; … … 398 398 /* 399 399 SendMessage(sockfd,"request"); 400 for (i = 0; i < ce_info->numObservables; i++){400 for (i = 0; i < radio_info->numObservables; i++){ 401 401 SendMessage(sockfd,..); 402 402 } … … 404 404 405 405 // Receive optimized values from the Cognitive Engine 406 for (i = 0; i < ce_info->numParameters; i++){406 for (i = 0; i < radio_info->numParameters; i++){ 407 407 bzero(buffer,256); 408 408 ReadMessage(sockfd,buffer); … … 413 413 414 414 // If policy engine is connect, validate new values 415 if( ce_info->policy_engine == 1) {415 if(radio_info->policy_engine == 1) { 416 416 417 417 printf("Cognitive Radio:: Found Policy Engine!\n"); 418 418 printf("Cognitive Radio:: Validating parameters with Policy Engine\n\n"); 419 RequestPolicyValidation(pList, ce_info);419 RequestPolicyValidation(pList,radio_info); 420 420 printf("Cognitive Radio:: Done\n\n"); 421 421 … … 429 429 RunSimulator(int32_t socketfd, Utility * uList[], 430 430 Parameter * pList[], Observable * oList[], 431 CE_Info * ce_info) {431 Radio_Info * radio_info) { 432 432 433 433 float **past_exp; … … 435 435 436 436 // Set fake current environment params = current environment 437 RequestCEOptimization(socketfd, uList, pList, oList, ce_info);437 RequestCEOptimization(socketfd, uList, pList, oList, radio_info); 438 438 439 439 // Act like we are updating the hardware tranmission settings … … 446 446 447 447 void 448 InitializePE(int32_t socket, CE_Info * ce_info)448 InitializePE(int32_t socket, Radio_Info * radio_info) 449 449 { 450 450 // Policy Engine is connected 451 451 // Set global policy engine value to 1 452 ce_info->policy_engine = 1;453 ce_info->policy_socket = socket;452 radio_info->policy_engine = 1; 453 radio_info->policy_socket = socket; 454 454 455 455 return; … … 458 458 void 459 459 InitializeCE(int32_t socketfd, Utility* uList[], Parameter* pList[], \ 460 Observable* oList[], CE_Info* ce_info)461 { 462 LoadCEConfiguration(socketfd, uList, pList, oList, ce_info);460 Observable* oList[], Radio_Info* radio_info) 461 { 462 LoadCEConfiguration(socketfd, uList, pList, oList, radio_info); 463 463 464 464 // cr experience … … 466 466 int32_t num_cols; 467 467 // get number of columns 468 num_cols = ce_info->numUtilities + ce_info->numParameters;469 num_cols = num_cols + ce_info->numObservables;468 num_cols = radio_info->numUtilities + radio_info->numParameters; 469 num_cols = num_cols + radio_info->numObservables; 470 470 num_cols = num_cols + 1; // overall utility 471 471 int32_t num_rows = 2; … … 496 496 UpdateCEExperience(socketfd, num_rows, num_cols, past_exp); 497 497 498 RunSimulator(socketfd, uList, pList, oList, ce_info);498 RunSimulator(socketfd, uList, pList, oList, radio_info); 499 499 } 500 500 … … 502 502 void 503 503 HandleTCPClient(int32_t socketFD, Utility* uList[], Parameter* pList[], \ 504 Observable* oList[], CE_Info* ce_info)504 Observable* oList[], Radio_Info* radio_info) 505 505 { 506 506 char buffer[256]; … … 513 513 514 514 if(strcmp(buffer,"register_engine_cognitive") == 0) 515 InitializeCE(socketFD, uList, pList, oList, ce_info);515 InitializeCE(socketFD, uList, pList, oList, radio_info); 516 516 517 517 if(strcmp(buffer,"register_engine_policy") == 0) 518 InitializePE(socketFD, ce_info);518 InitializePE(socketFD, radio_info); 519 519 520 520 if(strcmp(buffer,"optimize") == 0) 521 RunSimulator(socketFD, uList, pList, oList, ce_info);521 RunSimulator(socketFD, uList, pList, oList, radio_info); 522 522 523 523 // TODO why aren't we doing this anymore? … … 528 528 int32_t 529 529 StartServers(Utility* uList[], Parameter* pList[], Observable* oList[], \ 530 CE_Info* ce_info)530 Radio_Info* radio_info) 531 531 { 532 532 int32_t * servSock; … … 632 632 } 633 633 634 HandleTCPClient(new_sd, uList, pList, oList, ce_info);634 HandleTCPClient(new_sd, uList, pList, oList, radio_info); 635 635 FD_SET(new_sd,&sockSet); 636 636 if(new_sd > maxDescriptor) … … 641 641 642 642 printf("Request on already open descriptor.\n\n"); 643 HandleTCPClient(port, uList, pList, oList, ce_info);643 HandleTCPClient(port, uList, pList, oList, radio_info); 644 644 645 645 } … … 671 671 Parameter * pList[10]; 672 672 Observable * oList[10]; 673 struct CE_Info *ce_info;673 struct Radio_Info *radio_info; 674 674 675 675 if((fd = open("/dev/zero", O_RDWR)) == -1) 676 676 return 1; 677 677 678 ce_info = (struct CE_Info *)mmap(0,sizeof(CE_Info),PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);678 radio_info = (struct Radio_Info *)mmap(0,sizeof(Radio_Info),PROT_READ|PROT_WRITE,MAP_SHARED,fd,0); 679 679 680 680 close(fd); … … 696 696 697 697 cout << "\n\nInitialize:: Attemping to parse " << pFilename << "." << endl; 698 parse_ce_config( &doc , uList, pList, oList, ce_info);698 parse_ce_config( &doc , uList, pList, oList, radio_info); 699 699 cout << "Initialize:: Configuration file parsing completed.\n" << endl; 700 700 701 //print_current_config(uList, pList, oList, & ce_info);701 //print_current_config(uList, pList, oList, &radio_info); 702 702 703 StartServers(uList, pList, oList, ce_info);703 StartServers(uList, pList, oList, radio_info); 704 704 return 1; 705 705 }