Пример #1
0
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;
}
Пример #2
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);
}
Пример #3
0
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);

}
Пример #4
0
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);
}