254 | | |
255 | | void |
256 | | CognitiveRadioShell::RegisterPolicyEngine(int32_t socketFD) |
257 | | { |
258 | | LOG("Cognitive Radio Shell:: Received registration from Policy Engine on socket %d.\n", \ |
259 | | socketFD); |
260 | | |
261 | | PE_present = true; |
262 | | } |
263 | | |
264 | | |
265 | | void |
266 | | CognitiveRadioShell::DeregisterPolicyEngine(int32_t socketFD) |
267 | | { |
268 | | LOG("Cognitive Radio Shell:: Received deregistration message from Policy Engine.\n"); |
269 | | |
270 | | PE_present = false; |
271 | | |
272 | | SendMessage(socketFD, "deregister_ack"); |
273 | | shutdown(socketFD, 2); |
274 | | close(socketFD); |
275 | | LOG("Cognitive Radio Shell:: Socket %d closed.\n", socketFD); |
276 | | } |
277 | | |
278 | | |
279 | | void |
280 | | CognitiveRadioShell::RegisterSML(int32_t socketFD) |
281 | | { |
282 | | LOG("Cognitive Radio Shell:: Received registration from SML on socket %d.\n", \ |
283 | | socketFD); |
284 | | |
285 | | SML_present = true; |
286 | | } |
287 | | |
288 | | |
289 | | void |
290 | | CognitiveRadioShell::DeregisterSML(int32_t socketFD) |
291 | | { |
292 | | LOG("Cognitive Radio Shell:: Received deregistration message from SML.\n"); |
293 | | |
294 | | SML_present = false; |
295 | | |
296 | | SendMessage(socketFD, "deregister_ack"); |
297 | | shutdown(socketFD, 2); |
298 | | close(socketFD); |
299 | | LOG("Cognitive Radio Shell:: Socket %d closed.\n", socketFD); |
300 | | } |
301 | | |
302 | | void |
303 | | CognitiveRadioShell::SetActiveMission(int32_t socketFD) |
304 | | { |
305 | | char buffer[256]; |
306 | | |
307 | | LOG("Cognitive Radio Shell:: Received Set Active Mission command from host.\n"); |
308 | | |
309 | | /* Read the name of the active mission to be set from the host. */ |
310 | | memset(buffer, 0, 256); |
311 | | ReadMessage(commandSocketFD, buffer); |
312 | | |
313 | | /* Send command to SML. */ |
314 | | SendMessage(ceSocketFD, "set_active_mission"); |
315 | | SendMessage(ceSocketFD, buffer); |
316 | | |
317 | | /* Get ack from SML saying the mission was set properly */ |
318 | | memset(buffer, 0, 256); |
319 | | ReadMessage(ceSocketFD, buffer); |
320 | | |
321 | | /* Forward ack to host */ |
322 | | SendMessage(commandSocketFD, buffer); |
323 | | } |
| 472 | ////////////// NEW INCLUSION /////////////////// |
| 473 | |
| 474 | /* Receive Set of Utilities */ |
| 475 | memset(buffer, 0, 256); |
| 476 | ReadMessage(commandSocketFD,buffer); |
| 477 | uint32_t numUtilities = atoi(buffer); |
| 478 | |
| 479 | LOG("Cognitive Radio Shell:: Attempting to get %i utilities.\n",numUtilities); |
| 480 | Utility *u = new Utility[numUtilities]; |
| 481 | |
| 482 | for (size_t i = 0;i < numUtilities; i++){ |
| 483 | memset(buffer, 0, 256); |
| 484 | ReadMessage(commandSocketFD,buffer); |
| 485 | u[i].name = std::string(buffer); |
| 486 | |
| 487 | memset(buffer, 0, 256); |
| 488 | ReadMessage(commandSocketFD,buffer); |
| 489 | u[i].value = atof(buffer); |
| 490 | } |
| 491 | |
| 492 | /////////////////////////////////////// |
| 517 | |
| 518 | ///////////// NEW //////////////////////////////////////////////////////// |
| 519 | LOG("Cognitive Radio Shell:: Passing on utilities.\n"); |
| 520 | sprintf(counter,"%i",numUtilities); |
| 521 | SendMessage(ceSocketFD,counter); |
| 522 | for(size_t i = 0; i < numUtilities; i++) { |
| 523 | SendMessage(ceSocketFD,u[i].name.c_str()); |
| 524 | sprintf(var,"%f",u[i].value); |
| 525 | SendMessage(ceSocketFD,var); |
| 526 | } |
| 527 | |
| 528 | ////////////// END of NEW ///////////////////////////////////// |
| 605 | } |
| 606 | |
| 607 | /* Receive Set of Utilities */ |
| 608 | memset(buffer, 0, 256); |
| 609 | ReadMessage(commandSocketFD, buffer); |
| 610 | uint32_t numUtilities = atoi(buffer); |
| 611 | |
| 612 | Utility *u = new Utility[numUtilities]; |
| 613 | |
| 614 | for(size_t i = 0; i < numUtilities; i++) { |
| 615 | memset(buffer, 0, 256); |
| 616 | ReadMessage(commandSocketFD, buffer); |
| 617 | u[i].name = std::string(buffer); |
| 618 | |
| 619 | memset(buffer, 0, 256); |
| 620 | ReadMessage(commandSocketFD, buffer); |
| 621 | u[i].value = atof(buffer); |
| 647 | /* Send Utilities */ |
| 648 | memset(counter, 0, 55); |
| 649 | sprintf(counter, "%i", numUtilities); |
| 650 | SendMessage(ceSocketFD,counter); |
| 651 | for(size_t i = 0; i < numUtilities; i++) { |
| 652 | SendMessage(ceSocketFD, u[i].name.c_str()); |
| 653 | sprintf(var, "%f", u[i].value); |
| 654 | SendMessage(ceSocketFD, var); |
| 655 | } |
| 656 | |
| 657 | |