| #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <dbus/dbus.h> void printf_Buddha() {
printf(" \n "); printf(" ** _ooOoo_ \n "); printf(" ** o8888888o \n "); printf(" ** 88\" . \"88 \n "); printf(" ** (| -_- |) \n "); printf(" ** O\\ = /O \n "); printf(" ** ____/`---'\\____ \n "); printf(" ** . ' \\\\| |// `. \n "); printf(" ** / \\\\||| : |||//\\ \n "); printf(" ** / _||||| -:- |||||- \\ \n "); printf(" ** | | \\\\\\ - /// | | \n "); printf(" ** | \\_| ''\\---/'' | | \n "); printf(" ** \\ .-\\__ `-` ___/-. / \n "); printf(" ** ___`. .' /--.--\\ `. . __ \n "); printf(" ** ."" '< `.___\\_<|>_/___.' >'"". \n "); printf(" ** | | : `- \\`.;`\\ _ /`;.`/ - ` : | | \n "); printf(" ** \\ \\ `-. \\_ __\\ /__ _/ .-` / / \n "); printf(" ** ======`-.____`-.___\\_____/___.-`____.-'====== \n "); printf(" ** `=---=' \n "); printf(" ** \n "); printf(" ** ............................................. \n "); printf(" ** 佛祖保佑 永无BUG \n "); printf(" **/ \n "); } DBusConnection* init_bus() {
DBusConnection *connection; DBusError err; int ret; dbus_error_init(&err); connection = dbus_bus_get(DBUS_BUS_SESSION, &err); if(dbus_error_is_set(&err)) {
printf("connection error: :%s -- %s\n", err.name, err.message); dbus_error_free(&err); return NULL; } ret = dbus_bus_request_name(connection, "hello.world.client", DBUS_NAME_FLAG_REPLACE_EXISTING, &err); if(dbus_error_is_set(&err)) {
printf("Name error: %s -- %s\n", err.name, err.message); dbus_error_free(&err); return NULL; } if(ret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) return NULL; return connection; } void send_signal(DBusConnection *connection) {
DBusMessage *msg; DBusMessageIter arg; char *str = "hello world!"; //创建一个signal对象 //param1: path (这个逻辑来说,可以是任何字符串,只要符合规则即可) //param2: interface (一样) //param3: 信号方法名(必须与服务端名匹配) if((msg = dbus_message_new_signal("/hello", "aa.bb.cc", "alarm_test")) == NULL) {
printf("message is NULL\n"); return; } #if 0 //这个看需求添加,一般来说,信号是一种单向广播,加上这一句变单向单播 //param2: bus_name if(!dbus_message_set_destination(msg, "hello.world.service")) {
printf("memory error\n"); } #endif //添加参数的一些接口 dbus_message_iter_init_append(msg, &arg); dbus_message_iter_append_basic(&arg, DBUS_TYPE_STRING, &str); //入队 dbus_connection_send(connection, msg, NULL); //发送 dbus_connection_flush(connection); //释放内存 dbus_message_unref(msg); return; } void send_method_call(DBusConnection *connection) {
DBusMessage *msg; DBusMessageIter arg; DBusPendingCall *pending; int a = 100; int b = 99; int sum; //输入a和b两个整型数据 printf("please input value of a and b \n"); scanf("%d %d", &a, &b); printf("a= %d b=%d \n", a,b); msg = dbus_message_new_method_call("hello.world.service", "/hello/world","hello.world", "add"); if(msg == NULL) {
printf("no memory\n"); return;
|