Updated docs
This commit is contained in:
parent
e5217baa90
commit
f3911bfdf9
85
README.md
85
README.md
|
@ -55,3 +55,88 @@ python2 matrix.py | ../bin/twinkl-client lightwall.lan 7
|
|||
|
||||
python2 random.py | ../bin/twinkl-client ampel.lan 7
|
||||
```
|
||||
|
||||
twinklclient.so
|
||||
===============
|
||||
If you like to use your stdout for other things then piping data to the
|
||||
twinkl client binary you should consider using the twinkl client library.
|
||||
|
||||
It offers the following functions:
|
||||
```C
|
||||
/*
|
||||
* Functions for handling sockets
|
||||
*/
|
||||
|
||||
// Opens a 'connected' upd socket for this host and port, returns the filedescriptor
|
||||
int twinklsocket_open(const char *host, const char *port);
|
||||
|
||||
// Sends a twinkl message
|
||||
void twinklsocket_send(int sockfd, const struct twinkl_message *message);
|
||||
|
||||
// Closes the socket
|
||||
void twinklsocket_close(int sockfd);
|
||||
|
||||
|
||||
/*
|
||||
* Wrappers for handling twinkl messages
|
||||
*/
|
||||
|
||||
// Allocates memory for a twinkl message, returns the pointer
|
||||
twinkl_message* twinklmsg_create();
|
||||
|
||||
// Reset a message to 0 (wrapper for memset)
|
||||
void twinklmsg_reset(struct twinkl_message *msg);
|
||||
|
||||
// Sets the value and marks the channel as 'used' for messages priority level
|
||||
void twinklmsg_set_value(struct twinkl_message *msg, uint16_t chan, uint8_t value);
|
||||
|
||||
// Resets the channel to 0 and unsets the 'used' flag
|
||||
void twinklmsg_unset_value(struct twinkl_message *msg, uint16_t chan);
|
||||
|
||||
// Sets the priority level for the message
|
||||
void twinklmsg_set_priority(struct twinkl_message *msg, uint8_t priority);
|
||||
|
||||
// Free the memory allocated for the message
|
||||
void twinklmsg_destroy(struct twinkl_message* msg);
|
||||
```
|
||||
|
||||
To use it from C just include `twinklsocket.h` and `message.h`,
|
||||
then link against `twinklclient.so`.
|
||||
Keep in mind that there is no need to use the wrapper functions for twinkl
|
||||
messages included in `twinklclient.so`.
|
||||
Just directly us the ones in `message.h` as they can be inlined by your compiler
|
||||
for better performance.
|
||||
Keep in mind that the functions in `twinklclient.so` are named different than the ones
|
||||
in `message.h` to avoid accidentally using the slower versions.
|
||||
|
||||
To use the twinkl client library in other languages than C,
|
||||
the message wrapper function can be used to take of allocating,
|
||||
deallocating and modifing twinkl messages.
|
||||
This is especially usefull for languages without a concept for direct memory
|
||||
management like python.
|
||||
Using the wrapper functions it is only necessary to deal with integers and pointers
|
||||
(which can be represented as integers as well).
|
||||
See `animations/twinklclient.py` and the example below for details.
|
||||
|
||||
```C
|
||||
twinkl_server = "127.0.0.1"
|
||||
port = "1337";
|
||||
|
||||
fd = twinklsocket_open(twinkl_server, port)
|
||||
|
||||
msg = twinklmsg_create()
|
||||
|
||||
twinklmsg_set_priority(msg, 0);
|
||||
|
||||
twinklmsg_set_value(msg, 23, 42);
|
||||
twinklmsg_set_value(msg, 46, 5);
|
||||
// ... more stuff
|
||||
|
||||
twinklsocket_send(fd, msg);
|
||||
|
||||
// Tear down
|
||||
|
||||
twinklsocket_close(fd);
|
||||
|
||||
twinklmsg_destroy(msg);
|
||||
```
|
||||
|
|
Loading…
Reference in New Issue