The Storyboard IO plugin provides the capability to set application variable values using the Storyboard IO API, allowing external client programs to change data dynamically.
 Clients can use the gre_io_add_mdata() function to serialize
                    each variable value that is to be set. As values are added to the serialized
                    buffer, it will be grown until it reaches a maximum size for the transport, at
                    which point the gre_io_add_mdata() function will return -1
                    indicating it is full. The data can be then sent by using the
                        gre_io_send_mdata() function which will send the change request
                    to the Storyboard IO plugin and set the appropriate values in the Storyboard
                    application.
| ![[Note]](images/note_635484789.png) | Note | 
|---|---|
| Data must be sent in order of descending alignment requirements. Example: 4u1 4u1 2u1 1s0 is good, 2u1 4u1 4u1 1s0 is not | 
gre_io_t                    *send_handle;
gre_io_serialized_data_t    *md_buffer = NULL;
uint32_t                    x;
char                        *ptr;
int                         ret;
/*
 * Connect to the application channel
 */
send_handle = gre_io_open("my_channel", GRE_IO_TYPE_WRONLY);
if(send_handle == NULL) {
    printf("Can't open send handle [%s]\n", argv[1]);
    return 0;
}
/*
 * Add some values to be set in the data manager
 */
ptr = "my string";
ret = gre_io_add_mdata(&md_buffer,
  "Test.String",
  "1s0",
  ptr, strlen(ptr)+1);
x = 1;
ret = gre_io_add_mdata(&md_buffer,
  "Test.Number",
  "4u1",
  &x, sizeof(uint32_t));
/*
 * Send the data to be set in the application.
 */
gre_io_send_mdata(send_handle, md_buffer);