diff options
Diffstat (limited to 'ucs2-afb')
-rw-r--r-- | ucs2-afb/ucs_apihat.c | 2 | ||||
-rw-r--r-- | ucs2-afb/ucs_apihat.h | 48 | ||||
-rw-r--r-- | ucs2-afb/ucs_binding.c | 31 | ||||
-rw-r--r-- | ucs2-afb/ucs_binding.h | 6 |
4 files changed, 25 insertions, 62 deletions
diff --git a/ucs2-afb/ucs_apihat.c b/ucs2-afb/ucs_apihat.c index 04bf50f..9a6abd9 100644 --- a/ucs2-afb/ucs_apihat.c +++ b/ucs2-afb/ucs_apihat.c @@ -18,4 +18,6 @@ #define _GNU_SOURCE #include "ucs_binding.h" + +// include code generated from afb-genskel #include "ucs_apidef.h" diff --git a/ucs2-afb/ucs_apihat.h b/ucs2-afb/ucs_apihat.h deleted file mode 100644 index 8926344..0000000 --- a/ucs2-afb/ucs_apihat.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * AlsaLibMapping -- provide low level interface with AUDIO lib (extracted from alsa-json-gateway code) - * Copyright (C) 2015,2016,2017, Fulup Ar Foll fulup@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. - */ - -#ifndef UCS2BINDING_H -#define UCS2BINDING_H - -#ifndef PUBLIC - #define PUBLIC -#endif -#define STATIC static - -#include <json-c/json.h> -#include <afb/afb-binding.h> -#include <afb/afb-service-itf.h> - -#include "ucs_interface.h" - -#ifndef CONTROL_CDEV_TX -#error FATAL: CONTROL_CDEV_TX missing (check ./etc/config.cmake + rerun cmake) -#endif -#ifndef CONTROL_CDEV_RX -#error FATAL: CONTROL_CDEV_RX missing (check ./etc/config.cmake + rerun cmake) -#endif - -// import from AlsaAfbBinding -extern const struct afb_binding_interface *afbIface; -extern struct afb_service afbSrv; - -// API verbs prototype -PUBLIC void initUcs2 (struct afb_req request); - - -#endif /* UCS2BINDING_H */ - diff --git a/ucs2-afb/ucs_binding.c b/ucs2-afb/ucs_binding.c index fc8d613..8ccc02f 100644 --- a/ucs2-afb/ucs_binding.c +++ b/ucs2-afb/ucs_binding.c @@ -65,11 +65,18 @@ typedef struct { static ucsContextT *ucsContextS; PUBLIC void UcsXml_CB_OnError(const char format[], uint16_t vargsCnt, ...) { - /*DEBUG (afbIface, format, args); */ + /*AFB_DEBUG (afbIface, format, args); */ va_list args; va_start (args, vargsCnt); vfprintf (stderr, format, args); va_end(args); + + va_list argptr; + char outbuf[300]; + va_start(argptr, vargsCnt); + vsprintf(outbuf, format, argptr); + va_end(argptr); + AFB_WARNING (outbuf); } PUBLIC uint16_t UCSI_CB_OnGetTime(void *pTag) { @@ -99,8 +106,8 @@ STATIC int onTimerCB (sd_event_source* source,uint64_t timer, void* pTag) { PUBLIC void UCSI_CB_OnSetServiceTimer(void *pTag, uint16_t timeout) { uint64_t usec; /* set a timer with 250ms accuracy */ - sd_event_now(afb_daemon_get_event_loop(afbIface->daemon), CLOCK_BOOTTIME, &usec); - sd_event_add_time(afb_daemon_get_event_loop(afbIface->daemon), NULL, CLOCK_MONOTONIC, usec + (timeout*1000), 250, onTimerCB, pTag); + sd_event_now(afb_daemon_get_event_loop(), CLOCK_BOOTTIME, &usec); + sd_event_add_time(afb_daemon_get_event_loop(), NULL, CLOCK_MONOTONIC, usec + (timeout*1000), 250, onTimerCB, pTag); } @@ -121,7 +128,7 @@ void UCSI_CB_OnUserMessage(void *pTag, bool isError, const char format[], vsprintf(outbuf, format, argptr); va_end(argptr); if (isError) - NOTICE (afbIface, outbuf); + AFB_NOTICE (outbuf); } /** UCSI_Service cannot be called directly within UNICENS context, need to service stack through mainloop */ @@ -137,7 +144,7 @@ STATIC int OnServiceRequiredCB (sd_event_source *source, uint64_t usec, void *pT PUBLIC void UCSI_CB_OnServiceRequired(void *pTag) { /* push an asynchronous request for loopback to call UCSI_Service */ - sd_event_add_time(afb_daemon_get_event_loop(afbIface->daemon), NULL, CLOCK_MONOTONIC, 0, 0, OnServiceRequiredCB, pTag); + sd_event_add_time(afb_daemon_get_event_loop(), NULL, CLOCK_MONOTONIC, 0, 0, OnServiceRequiredCB, pTag); } /* Callback when ever this UNICENS wants to send a message to INIC. */ @@ -173,7 +180,7 @@ PUBLIC void UCSI_CB_OnTxRequest(void *pTag, const uint8_t *pData, uint32_t len) * \param pTag - Pointer given by the integrator by UCSI_Init */ void UCSI_CB_OnStop(void *pTag) { - NOTICE (afbIface, "UNICENS stopped"); + AFB_NOTICE ("UNICENS stopped"); } @@ -231,7 +238,7 @@ int onReadCB (sd_event_source* src, int fileFd, uint32_t revents, void* pTag) { return 0; ok= UCSI_ProcessRxData(&ucsContext->ucsiData, pBuffer, (uint16_t)len); if (!ok) { - DEBUG (afbIface, "Buffer overrun (not handle)"); + AFB_DEBUG ("Buffer overrun (not handle)"); /* Buffer overrun could replay pBuffer */ } return 0; @@ -264,7 +271,7 @@ STATIC UcsXmlVal_t* ParseFile(struct afb_req request) { xmlBuffer[readSize] = '\0'; /* In any case, terminate it. */ if (readSize != fdStat.st_size) { - afb_req_fail_f (request, "fileread-fail", "File to read fullfile '%s' size(%d!=%d)", filename, readSize, fdStat.st_size); + afb_req_fail_f (request, "fileread-fail", "File to read fullfile '%s' size(%d!=%d)", filename, (int)readSize, (int)fdStat.st_size); goto OnErrorExit; } @@ -292,8 +299,8 @@ STATIC int volOnSvcCB (sd_event_source* source,uint64_t timer, void* pTag) { /* This callback is fire each time an volume event wait in the queue */ void volumeCB (uint16_t timeout) { uint64_t usec; - sd_event_now(afb_daemon_get_event_loop(afbIface->daemon), CLOCK_BOOTTIME, &usec); - sd_event_add_time(afb_daemon_get_event_loop(afbIface->daemon), NULL, CLOCK_MONOTONIC, usec + (timeout*1000), 250, volOnSvcCB, ucsContextS); + sd_event_now(afb_daemon_get_event_loop(), CLOCK_BOOTTIME, &usec); + sd_event_add_time(afb_daemon_get_event_loop(), NULL, CLOCK_MONOTONIC, usec + (timeout*1000), 250, volOnSvcCB, ucsContextS); } STATIC int volSndCmd (struct afb_req request, struct json_object *commandJ, ucsContextT *ucsContext) { @@ -416,7 +423,7 @@ PUBLIC void ucs2SetVol (struct afb_req request) { } -PUBLIC void ucs2Init (struct afb_req request) { +PUBLIC void ucs2Configure (struct afb_req request) { static UcsXmlVal_t *ucsConfig; static ucsContextT ucsContext; @@ -439,7 +446,7 @@ PUBLIC void ucs2Init (struct afb_req request) { UCSI_Init(&ucsContext.ucsiData, &ucsContext); /* register aplayHandle file fd into binder mainloop */ - err = sd_event_add_io(afb_daemon_get_event_loop(afbIface->daemon), &evtSource, ucsContext.rx.fileHandle, EPOLLIN, onReadCB, &ucsContext); + err = sd_event_add_io(afb_daemon_get_event_loop(), &evtSource, ucsContext.rx.fileHandle, EPOLLIN, onReadCB, &ucsContext); if (err < 0) { afb_req_fail_f (request, "register-mainloop", "Cannot hook events to mainloop"); goto OnErrorExit; diff --git a/ucs2-afb/ucs_binding.h b/ucs2-afb/ucs_binding.h index 5b74730..082f6cc 100644 --- a/ucs2-afb/ucs_binding.h +++ b/ucs2-afb/ucs_binding.h @@ -18,6 +18,9 @@ #ifndef UCS2BINDING_H #define UCS2BINDING_H +// Use Version of AGL Application Framework API +#define AFB_BINDING_VERSION 2 + #ifndef PUBLIC #define PUBLIC #endif @@ -25,7 +28,6 @@ #include <json-c/json.h> #include <afb/afb-binding.h> -#include <afb/afb-service-itf.h> #include "ucs_interface.h" @@ -41,7 +43,7 @@ extern const struct afb_binding_interface *afbIface; extern struct afb_service afbSrv; // API verbs prototype -PUBLIC void ucs2Init (struct afb_req request); +PUBLIC void ucs2Configure (struct afb_req request); PUBLIC void ucs2SetVol (struct afb_req request); |