#include #include #include #include #include static void usage(int argc, char **argv) { fprintf(stderr, "usage: %s /dev/rfcommX\n", argv[0]); exit(1); } static int answer_phone_version_message(skipstone_message_service *service, void *buf, uint16_t size, uint16_t id) { uint8_t response[12] = { 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }; printf("Sending %hu message to %hu in response to %hu message\n", sizeof(response), id, size); skipstone_message_service_queue(service, &response, sizeof(response), id); return 0; } int main(int argc, char **argv) { skipstone_link *link; skipstone_message_service *service; if (argc != 2) { usage(argc, argv); } if ((link = skipstone_link_open_serial(argv[1])) == NULL) { goto error_link_open; } if ((service = skipstone_message_service_new()) == NULL) { goto error_message_service_new; } printf("Registering endpoint %p\n", answer_phone_version_message); skipstone_message_service_register(service, 17, answer_phone_version_message, NULL); skipstone_message_service_run(service, link); skipstone_link_close(link); return 0; error_message_service_new: skipstone_link_close(link); error_link_open: return 1; }