#include #include #include #include static void usage(int argc, char **argv) { fprintf(stderr, "usage: %s /dev/rfcommX\n", argv[0]); exit(1); } int main(int argc, char **argv) { skipstone_watch_link *link; void *buf; uint16_t len, endpoint; struct { uint8_t command; uint8_t state; uint32_t track_position; uint32_t play_rate; uint8_t shuffle; uint8_t repeat; } play_state = { 0x11, 0x01, 0, 44100, 0x01, 0x01 }; struct { uint8_t command; uint8_t artist_len; char artist[5]; uint8_t album_len; char album[5]; uint8_t title_len; char title[5]; } play_track = { 0x10, 5, "KMFDM", 5, "Nihil", 5, "Ultra" }; struct { uint8_t command; uint8_t package_len; char package[8]; uint8_t name_len; char name[8]; } play_info = { 0x13, 8, "DeaDBeeF", 8, "RealDead" }; if (argc != 2) { usage(argc, argv); } if ((buf = malloc(SKIPSTONE_MESSAGE_MAX_PAYLOAD)) == NULL) { goto error_malloc_buf; } if ((link = skipstone_watch_link_open_serial(argv[1])) == NULL) { goto error_watch_link_open; } while (skipstone_recv(link, buf, &len, &endpoint) >= 0) { printf("Received message %hu bytes for endpoint %hu\n", len, endpoint); if (skipstone_send(link, &play_track, sizeof(play_track), 0x20) < 0) { printf("Balls\n"); } } perror("skipstone_recv()"); skipstone_watch_link_close(link); return 0; error_watch_link_open: free(buf); error_malloc_buf: return 1; }