diff options
Diffstat (limited to 'uds-ble-id-init-service/src/uds-ble-id-init-service.c')
-rw-r--r-- | uds-ble-id-init-service/src/uds-ble-id-init-service.c | 146 |
1 files changed, 0 insertions, 146 deletions
diff --git a/uds-ble-id-init-service/src/uds-ble-id-init-service.c b/uds-ble-id-init-service/src/uds-ble-id-init-service.c deleted file mode 100644 index f887963..0000000 --- a/uds-ble-id-init-service/src/uds-ble-id-init-service.c +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright (C) 2015, 2016, 2017 "IoT.bzh" - * Author: José Bollo <jose.bollo@iot.bzh> - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#define _GNU_SOURCE - -#include <errno.h> -#include <stdint.h> -#include <unistd.h> -#include <stdlib.h> -#include <string.h> -#include <fcntl.h> -#include <sys/types.h> -#include <sys/stat.h> - -#include <json-c/json.h> -#include <systemd/sd-bus.h> - -#define AFB_BINDING_VERSION 2 -#include <afb/afb-binding.h> - -#include "aia-uds-bluez.h" - -#if !defined(AUTO_START_ADVISE) -#define AUTO_START_ADVISE 1 -#endif - -static int advising; - -static struct afb_event event; - -static int autoadvise = AUTO_START_ADVISE; - -/****************************************************************/ - -static void on_uds_change(const struct aia_uds *uds) -{ - struct json_object *object; - - AFB_INFO("UDS changed" - " first-name%s[%.*s]" - " last-name%s[%.*s]" - " email%s[%.*s]" - " language%s[%.*s]", - uds->first_name.changed ? "*" : "", (int)uds->first_name.length, uds->first_name.data ?:"", - uds->last_name.changed ? "*" : "", (int)uds->last_name.length, uds->last_name.data ?:"", - uds->email.changed ? "*" : "", (int)uds->email.length, uds->email.data ?:"", - uds->language.changed ? "*" : "", (int)uds->language.length, uds->language.data ?:""); - - if (uds->email.changed) { - object = json_object_new_object(); - json_object_object_add(object, "incoming", json_object_new_string(uds->email.data)); - afb_event_push(event, object); - } -} - -static void start (struct afb_req request) -{ - int rc; - - if (!advising) { - rc = aia_uds_advise(1, NULL, NULL); - if (rc < 0) { -/* -TODO: solve the issue - afb_req_fail(request, "failed", "start scan failed"); - return; -*/ - AFB_ERROR("Ignoring scan start failed, because probably already in progress"); - } - } - advising = advising + 1; - afb_req_subscribe(request, event); - afb_req_success(request, NULL, NULL); -} - - -static void stop (struct afb_req request) -{ - if (advising) { - advising = advising - 1; - if (!advising) - aia_uds_advise(0, NULL, NULL); - } - afb_req_success(request, NULL, NULL); -} - -static int init() -{ - sd_bus *bus; - int rc; - - bus = afb_daemon_get_system_bus(); - rc = bus ? aia_uds_init(bus) : -ENOTSUP; - if (rc < 0) { - errno = -rc; - return -1; - } - - aia_uds_set_on_change(on_uds_change); - - event = afb_daemon_make_event("event"); - if (!afb_event_is_valid(event)) - return -1; - - rc = aia_uds_advise(autoadvise, NULL, NULL); - advising = autoadvise && rc >= 0; - return rc < 0 ? rc : 0; -} - - -// NOTE: this sample does not use session to keep test a basic as possible -// in real application most APIs should be protected with AFB_SESSION_CHECK -static const struct afb_verb_v2 verbs[]= -{ - {"start" , start, NULL, "start User Data Service", AFB_SESSION_NONE }, - {"stop" , stop , NULL, "stop User Data Service" , AFB_SESSION_NONE }, - {NULL} -}; - -const struct afb_binding_v2 afbBindingV2 = -{ - .api = "uds-ble-init-id", - .specification = NULL, - .info = "AGL Identitity initiator above BLE's User Data Service", - .verbs = verbs, - .preinit = NULL, - .init = init, - .onevent = NULL, - .noconcurrency = 1 -}; - -/* vim: set colorcolumn=80: */ - |