- added new example folder

pull/93/head
Michael Zillgith 7 years ago
parent b6c9a56d4a
commit 5e35e6694b

@ -0,0 +1,17 @@
set(iec61850_client_file_async_SRCS
client_example_async.c
)
IF(WIN32)
set_source_files_properties(${iec61850_client_file_async_SRCS}
PROPERTIES LANGUAGE CXX)
ENDIF(WIN32)
add_executable(iec61850_client_file_async
${iec61850_client_file_async_SRCS}
)
target_link_libraries(iec61850_client_file_async
iec61850
)

@ -0,0 +1,105 @@
/*
* client_example_async.c
*
* Shows how to use the asynchronous client API
*
* This example is intended to be used with server_example_basic_io.
*/
#include "iec61850_client.h"
#include <stdlib.h>
#include <stdio.h>
#include "hal_thread.h"
static bool fileTransferComplete = false;
static bool
getFileAsyncHandler (uint32_t invokeId, void* parameter, IedClientError err, uint32_t originalInvokeId,
uint8_t* buffer, uint32_t bytesRead, bool moreFollows)
{
if ((err != IED_ERROR_OK) || (moreFollows == false)) {
if (err == IED_ERROR_OK) {
printf("Received %d bytes\n", bytesRead);
}
printf("File transfer complete (err:%d)\n", err);
fileTransferComplete = true;
}
else {
printf("Received %d bytes\n", bytesRead);
}
return true;
}
int main(int argc, char** argv) {
char* hostname;
char* filename = NULL;
if (argc > 1)
hostname = argv[1];
else
hostname = "localhost";
if (argc > 2)
filename = argv[2];
IedClientError error;
IedConnection con = IedConnection_create();
IedConnection_connectAsync(con, &error, hostname, 102);
if (error == IED_ERROR_OK) {
bool success = true;
while (IedConnection_getState(con) != IED_STATE_CONNECTED) {
if (IedConnection_getState(con) == IED_STATE_CLOSED) {
success = false;
break;
}
Thread_sleep(10);
}
if (success) {
if (filename) {
IedConnection_getFileAsync(con, &error, filename, getFileAsyncHandler, NULL);
printf("Started file download\n");
while (fileTransferComplete == false)
Thread_sleep(10);
}
}
Thread_sleep(1000);
IedConnection_releaseAsync(con, &error);
if (error != IED_ERROR_OK) {
printf("Release returned error: %d\n", error);
}
else {
while (IedConnection_getState(con) != IED_STATE_CLOSED) {
Thread_sleep(10);
}
}
}
else {
printf("Failed to connect to %s\n", hostname);
}
IedConnection_destroy(con);
}
Loading…
Cancel
Save