int snepServerThread :: init(nfc_device **device) { pnd = *device; if (llcp_init() < 0) { qDebug() << "llcp_init() failed."; return -1; } llc_link = llc_link_new(); if (!llc_link) { qDebug() << "Cannot allocate LLC link data structures"; return -1; } /** initial LLCP service struct */ struct llc_service *com_android_snep; if (!(com_android_snep = llc_service_new_with_uri(NULL, snepService, (char *)"urn:nfc:sn:snep", NULL))) { qDebug() << "Cannot create com.android.snep service"; } llc_service_set_miu(com_android_snep, 512); llc_service_set_rw(com_android_snep, 2); if (llc_link_service_bind(llc_link, com_android_snep, LLCP_SNEP_SAP) < 0) { qDebug() << "Cannot bind service"; } mac_link = mac_link_new(pnd, llc_link); if (!mac_link) { qDebug() << "Cannot create MAC link"; return -1; } qDebug() << "snep: flag set true"; flag = true; return 0; }
void test_llc_link_find_sap_by_uri(void) { struct llc_link *link; int res; link = llc_link_new(); cut_assert_not_null(link, cut_message("llc_link_new()")); struct llc_service *service = llc_service_new_with_uri(NULL, void_service, "urn:nfc:xsn:foo", NULL); res = llc_link_service_bind(link, service, -1); cut_assert_not_equal_int(-1, res, cut_message("llc_link_service_bind()")); uint8_t sap = llc_link_find_sap_by_uri(link, "urn:nfc:xsn:foo"); cut_assert_not_equal_int(0, sap, cut_message("llc_link_find_sap_by_uri()")); cut_assert_equal_int(res, sap, cut_message("Wrong SAP")); llc_link_service_unbind(link, service->sap); sap = llc_link_find_sap_by_uri(link, "urn:nfc:xsn:foo"); cut_assert_equal_int(0, sap, cut_message("llc_link_find_sap_by_uri()")); llc_service_free(service); llc_link_free(link); }
int main (int argc, char *argv[]) { nfc_init(&context); if (context == NULL) { printf("Unable to init libnfc (malloc)"); exit(EXIT_FAILURE); } if (llcp_init () < 0) errx (EXIT_FAILURE, "llcp_init()"); llcp_log_log("[nfc-p2p-demo.c]", LLC_PRIORITY_WARN, "This is a test warning message"); llcp_log_log("[nfc-p2p-demo.c]", LLC_PRIORITY_FATAL, "This is a test fatal message"); llcp_log_log("[nfc-p2p-demo.c]", LLC_PRIORITY_TRACE, "This is a test trace message"); llcp_log_log("[nfc-p2p-demo.c]", LLC_PRIORITY_DEBUG, "This is a test debug message"); llcp_log_log("[nfc-p2p-demo.c]", LLC_PRIORITY_ERROR, "This is a test error message"); int res; //Auto probe for nfc device /* nfc_connstring device_connstring[1]; res = nfc_list_devices (NULL, device_connstring, 1); if (res < 1) errx (EXIT_FAILURE, "Sorry, no NFC device found"); //Create nfc_device nfc_device *device; if (!(device = nfc_open (NULL, device_connstring[0]))) { errx (EXIT_FAILURE, "Cannot connect to NFC device"); } */ //Create nfc_device nfc_device *device; //if (!(device = nfc_open (NULL, device_connstring[0]))) { //if (!(device = nfc_open (NULL, "pn532_uart:/dev/ttyUSB0:115200"))) { if (!(device = nfc_open (context, NULL))) { errx (EXIT_FAILURE, "Cannot connect to NFC device"); } //Create llc_link struct llc_link *my_llc_link = llc_link_new (); struct llc_service *snep_service; //Create receiving service! if (!(snep_service = llc_service_new_with_uri (NULL, snep_service_thread, LLCP_SNEP_URI, NULL))) errx (EXIT_FAILURE, "Cannot create snep service"); //Bind llc_service to llc_link if (llc_link_service_bind (my_llc_link, snep_service, LLCP_SNEP_SAP) < 0) { errx (EXIT_FAILURE, "llc_service_new_with_uri()"); } //Create mac_link struct mac_link *my_mac_link = mac_link_new (device, my_llc_link); if (!my_mac_link) errx (EXIT_FAILURE, "Cannot establish MAC link"); //Active mac_link as initiator res = mac_link_activate_as_initiator(my_mac_link); if (res <= 0) errx (EXIT_FAILURE, "Cannot activate link"); //Wait for mac_link to finish void *status; mac_link_wait (my_mac_link, &status); printf ("STATUS = %p\n", status); mac_link_free (my_mac_link); llc_link_free (my_llc_link); nfc_close (device); llcp_fini (); nfc_exit(context); exit(EXIT_SUCCESS); }
struct llc_service * llc_service_new(void * (*accept_routine)(void *), void * (*thread_routine)(void *), void *user_data) { return llc_service_new_with_uri(accept_routine, thread_routine, NULL, user_data); }