/* * goose_publisher_example.c */ #include #include #include #include #include #include "mms_value.h" #include "goose_publisher.h" #include "hal_thread.h" // has to be executed as root! int main(int argc, char** argv) { char* interface; if (argc > 1) interface = argv[1]; else interface = "eth0"; printf("Using interface %s\n", interface); LinkedList dataSetValues = LinkedList_create(); LinkedList_add(dataSetValues, MmsValue_newIntegerFromInt32(1234)); LinkedList_add(dataSetValues, MmsValue_newBinaryTime(false)); LinkedList_add(dataSetValues, MmsValue_newIntegerFromInt32(5678)); CommParameters gooseCommParameters; gooseCommParameters.appId = 1000; gooseCommParameters.dstAddress[0] = 0x01; gooseCommParameters.dstAddress[1] = 0x0c; gooseCommParameters.dstAddress[2] = 0xcd; gooseCommParameters.dstAddress[3] = 0x01; gooseCommParameters.dstAddress[4] = 0x00; gooseCommParameters.dstAddress[5] = 0x01; gooseCommParameters.vlanId = 0; gooseCommParameters.vlanPriority = 4; /* * Create a new GOOSE publisher instance. As the second parameter the interface * name can be provided (e.g. "eth0" on a Linux system). If the second parameter * is NULL the interface name as defined with CONFIG_ETHERNET_INTERFACE_ID in * stack_config.h is used. */ GoosePublisher publisher = GoosePublisher_create(&gooseCommParameters, interface); GoosePublisher_setGoCbRef(publisher, "simpleIOGenericIO/LLN0$GO$gcbAnalogValues"); GoosePublisher_setConfRev(publisher, 1); GoosePublisher_setDataSetRef(publisher, "simpleIOGenericIO/LLN0$AnalogValues"); int i = 0; for (i = 0; i < 3; i++) { Thread_sleep(1000); if (GoosePublisher_publish(publisher, dataSetValues) == -1) { printf("Error sending message!\n"); } } GoosePublisher_destroy(publisher); }