summaryrefslogtreecommitdiffstats
path: root/ucs2-afb
diff options
context:
space:
mode:
authorFulup Ar Foll <fulup@iot.bzh>2017-07-19 15:35:39 +0200
committerFulup Ar Foll <fulup@iot.bzh>2017-07-19 15:35:39 +0200
commit07b52f2a1a51a0715e03346229d72bb3c7154b2b (patch)
treee9baa38e830caf4db162905bfee692ae5d150940 /ucs2-afb
parentffbadf58291dd1c66acc7b17add759291e14f311 (diff)
First Compilation in V2 (work in Progress)
Diffstat (limited to 'ucs2-afb')
-rw-r--r--ucs2-afb/ucs_apihat.c2
-rw-r--r--ucs2-afb/ucs_apihat.h48
-rw-r--r--ucs2-afb/ucs_binding.c31
-rw-r--r--ucs2-afb/ucs_binding.h6
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);