コード例 #1
0
ファイル: example-svc-array.c プロジェクト: relmachhour/abus
int main(int argc, char **argv)
{
	abus_t *abus;
	int ret;

	abus = abus_init(NULL);

	ret = abus_decl_method(abus, "examplearraysvc", "sqr", &svc_array_sqr_cb,
					ABUS_RPC_FLAG_NONE,
					"square cookie",
					"Compute square value of all the elements of an array. Serves as an example of how to deal with array in A-Bus",
					"k:i:some contant,my_array:(a:i:value to be squared,arg_index:i:index of arg for demo):array of stuff",
					"res_k:i:same contant,res_array:(res_a:i:squared value):array of squared stuff");
	if (ret != 0) {
		abus_cleanup(abus);
		return EXIT_FAILURE;
	}

	/* do other stuff */
	sleep(10000);

	abus_cleanup(abus);

	return EXIT_SUCCESS;
}
コード例 #2
0
ファイル: abus-service.c プロジェクト: relmachhour/abus
int main(int argc, char **argv)
{
	abus_t *abus;
	const char *service_name;
	int ret, opt;

	while ((opt = getopt(argc, argv, "hvVT")) != -1) {
		switch (opt) {
		case 'h':
			usage(argv[0], EXIT_SUCCESS);
			break;
		case 'v':
			++opt_verbose;
			setenv("ABUS_MSG_VERBOSE", "1", 1);
			break;
		case 'T':
			opt_rpc_threaded = 1;
			break;
		case 'V':
			printf("%s: %s\n%s", argv[0], abus_get_version(), abus_get_copyright());
			exit(EXIT_SUCCESS);
			break;
		default:
			break;
		}
	}
	if (optind+3 > argc)
		usage(argv[0], EXIT_FAILURE);

	abus = abus_init(NULL);

	service_name = argv[optind++];

	while (optind+2 <= argc) {
		const char *method_name = argv[optind++];
		const char *method_command = argv[optind++];

		ret = abus_decl_method(abus, service_name,
					method_name,
					&svc_rpc_caller,
					opt_rpc_threaded ? ABUS_RPC_THREADED : ABUS_RPC_FLAG_NONE,
					(void*)method_command,
					NULL, NULL, NULL);
		if (ret != 0) {
			fprintf(stderr, "A-Bus method declaration failed: %s\n", abus_strerror(ret));
			abus_cleanup(abus);
			exit(EXIT_FAILURE);
		}
	}

	ret = abus_decl_method(abus, service_name,
				"terminate",
				&svc_terminate_cb,
				ABUS_RPC_FLAG_NONE,
				NULL,
				"Terminate service", NULL, NULL);
	if (ret != 0) {
		abus_cleanup(abus);
		exit(EXIT_FAILURE);
	}

	/* do other stuff */
	while(!terminate) {
		sleep(1);
	}

	abus_cleanup(abus);

	return EXIT_SUCCESS;
}
コード例 #3
0
int wpa_abus_init(struct wpa_supplicant *wpa) {
    abus_t *abus;
    int ret;
    abus_conf_t abus_conf;
    int fd=0;
    abus = abus_init(NULL);

    abus_get_conf(abus, &abus_conf);
    
    abus_conf.poll_operation = 1;
    abus_set_conf(abus, &abus_conf);
    
    if(ret == -1)
    	return EXIT_FAILURE;
    

    ret = abus_decl_method(abus, "wpa_supp", "ap_scan", &svc_ap_scan_cb,
                                            ABUS_RPC_FLAG_NONE,
                                            wpa,
                                            "Send a notification to begin scanning",
                                            "a:i:type of ap_scan (0,1,2)",
                                            " ");
    if (ret != 0) {
        abus_cleanup(abus);
        return EXIT_FAILURE;
    }
    ret = abus_decl_method(abus, "wpa_supp", "scan_results", &svc_scan_results_cb,
                                            ABUS_RPC_FLAG_NONE,
                                            wpa,
                                            "Read the results of scanning",
                                            "",
                                            "reply:s:Read the results");
    if (ret != 0) {
        abus_cleanup(abus);
        return EXIT_FAILURE;
    }
    ret = abus_decl_method(abus, "wpa_supp", "add_network", &svc_add_network_cb,
                                            ABUS_RPC_FLAG_NONE,
                                            wpa,
                                            "add a network",
                                            "",
                                            "");
    if (ret != 0) {
        abus_cleanup(abus);
        return EXIT_FAILURE;
    }
    ret = abus_decl_method(abus, "wpa_supp", "set_network", &svc_set_network_cb,
                                            ABUS_RPC_FLAG_NONE,
                                            wpa,
                                            "Set a network",
                                            "str:s:write the commande : <network id> <variable name> <value>",
                                            "");
    if (ret != 0) {
        abus_cleanup(abus);
        return EXIT_FAILURE;
    }
    ret = abus_decl_method(abus, "wpa_supp", "select_network", &svc_select_network_cb,
                                            ABUS_RPC_FLAG_NONE,
                                            wpa,
                                            "Select a network",
                                            "str:s:write the id of the network",
                                            "");
    if (ret != 0) {
        abus_cleanup(abus);
        return EXIT_FAILURE;
    }
    ret = abus_decl_method(abus, "wpa_supp", "remove_network", &svc_remove_network_cb,
                                            ABUS_RPC_FLAG_NONE,
                                            wpa,
                                            "remove a network",
                                            "str:s:write the id of the network",
                                            "");
    if (ret != 0) {
        abus_cleanup(abus);
        return EXIT_FAILURE;
    }

    fd = abus_get_fd(abus);
    ret = eloop_register_read_sock(fd, wpa_abus_event,wpa, abus);


    return EXIT_SUCCESS;
}