/* * beagle_client.c * * Switch LEDs on the BeagleBone */ #include "iec61850_client.h" #include #include int main(int argc, char** argv) { char* hostname; int tcpPort = 102; if (argc > 1) hostname = argv[1]; else hostname = "localhost"; if (argc > 2) tcpPort = atoi(argv[2]); IedClientError error; IedConnection con = IedConnection_create(); IedConnection_connect(con, &error, hostname, tcpPort); if (error == IED_ERROR_OK) { /************************ * Direct control ***********************/ bool led4State = false; ControlObjectClient controlLED1 = ControlObjectClient_create("beagleGenericIO/GGIO1.SPCSO1", con); ControlObjectClient controlLED2 = ControlObjectClient_create("beagleGenericIO/GGIO1.SPCSO2", con); ControlObjectClient controlLED3 = ControlObjectClient_create("beagleGenericIO/GGIO1.SPCSO3", con); ControlObjectClient controlLED4 = ControlObjectClient_create("beagleGenericIO/GGIO1.DPCSO1", con); MmsValue* ctlValOn = MmsValue_newBoolean(true); MmsValue* ctlValOff = MmsValue_newBoolean(false); if (!ControlObjectClient_operate(controlLED1, ctlValOff, 0)) goto control_error; ControlObjectClient_select(controlLED2); if (!ControlObjectClient_operate(controlLED2, ctlValOff, 0)) goto control_error; if (!ControlObjectClient_operate(controlLED4, ctlValOff, 0)) goto control_error; while (1) { if (!ControlObjectClient_operate(controlLED3, ctlValOff, 0)) goto control_error; if (!ControlObjectClient_operate(controlLED1, ctlValOn, 0)) goto control_error; Thread_sleep(1000); if (!ControlObjectClient_operate(controlLED1, ctlValOff, 0)) goto control_error; ControlObjectClient_select(controlLED2); if (!ControlObjectClient_operate(controlLED2, ctlValOn, 0)) goto control_error; Thread_sleep(1000); ControlObjectClient_select(controlLED2); if (!ControlObjectClient_operate(controlLED2, ctlValOff, 0)) goto control_error; if (!ControlObjectClient_operate(controlLED3, ctlValOn, 0)) goto control_error; Thread_sleep(1000); if (led4State == false) { if (!ControlObjectClient_operate(controlLED4, ctlValOn, 0)) goto control_error; led4State = true; } else { if (!ControlObjectClient_operate(controlLED4, ctlValOff, 0)) goto control_error; led4State = false; } } goto exit_control_loop; control_error: printf("Error controlling device!\n"); exit_control_loop: MmsValue_delete(ctlValOn); MmsValue_delete(ctlValOff); ControlObjectClient_destroy(controlLED1); ControlObjectClient_destroy(controlLED2); ControlObjectClient_destroy(controlLED3); ControlObjectClient_destroy(controlLED4); IedConnection_close(con); } else { printf("Connection failed!\n"); } IedConnection_destroy(con); }