removed STD archeus, moved console and ssh into linux folder. also added libdbus
This commit is contained in:
parent
119d1b2c64
commit
8fe402e04e
27 changed files with 622 additions and 145 deletions
63
packages/linux/dbus/libdbus/helpers.c
Normal file
63
packages/linux/dbus/libdbus/helpers.c
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
#include "arc/linux/dbus/helpers.h"
|
||||
#include "arc/linux/dbus/dbus.h"
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
typedef struct ARC_DBus {
|
||||
DBusConnection *connection;
|
||||
DBusError error;
|
||||
|
||||
const char *handle;
|
||||
} ARC_DBus;
|
||||
|
||||
void ARC_DBusHelper_BusRequestName(ARC_DBus *dbus, const char *interface, const char *objectPath){
|
||||
int32_t response = dbus_bus_request_name(dbus->connection, interface, DBUS_NAME_FLAG_REPLACE_EXISTING, &(dbus->error));
|
||||
if(response == -1){
|
||||
printf("Request name failed %s\n", (dbus->error).message);
|
||||
dbus_error_free(&(dbus->error));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void ARC_DBusHelper_BusAddMatch(ARC_DBus *dbus, const char *interface, const char *objectPath, const char *member){
|
||||
//add response signal
|
||||
const char *matchRuleCStr = "type='signal',interface='%s',path='%s',member='%s'";
|
||||
uint32_t matchRuleLen = strlen(matchRuleCStr) + strlen(interface) + strlen(objectPath) + strlen(member);
|
||||
char matchRule[matchRuleLen];
|
||||
snprintf(matchRule, matchRuleLen, matchRuleCStr, interface, objectPath, member);
|
||||
|
||||
dbus_bus_add_match(dbus->connection, matchRule, &(dbus->error));
|
||||
if(dbus_error_is_set(&(dbus->error))){
|
||||
printf("failed to add match rule: %s\n", matchRuleCStr);
|
||||
dbus_error_free(&(dbus->error));
|
||||
}
|
||||
}
|
||||
|
||||
void ARC_DBusHelper_HandleSignal(DBusMessage *message){
|
||||
DBusError error;
|
||||
dbus_error_init(&error);
|
||||
|
||||
uint32_t response;
|
||||
|
||||
DBusMessageIter argumentsIter;
|
||||
dbus_message_iter_init(message, &argumentsIter);
|
||||
dbus_message_iter_get_basic(&argumentsIter, &response);
|
||||
|
||||
printf("Response signal: %u\n", response);
|
||||
|
||||
dbus_error_free(&error);
|
||||
}
|
||||
|
||||
void ARC_DBusHelper_AddStringVarientStringToMessageIterDictionary(DBusMessageIter *dictonaryIter, const char *stringKey, const char *varientStringValue){
|
||||
//TODO: should add arc error checks here
|
||||
DBusMessageIter keyIter;
|
||||
dbus_message_iter_open_container(dictonaryIter, DBUS_TYPE_DICT_ENTRY, NULL, &keyIter);
|
||||
dbus_message_iter_append_basic(&keyIter, DBUS_TYPE_STRING, &stringKey);
|
||||
|
||||
DBusMessageIter valueIter;
|
||||
dbus_message_iter_open_container(&keyIter, DBUS_TYPE_VARIANT, DBUS_TYPE_STRING_AS_STRING, &valueIter);
|
||||
dbus_message_iter_append_basic(&valueIter, DBUS_TYPE_STRING, &varientStringValue);
|
||||
|
||||
dbus_message_iter_close_container(&keyIter, &valueIter);
|
||||
dbus_message_iter_close_container(dictonaryIter, &keyIter);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue