blob: d6c645f112dcfcae2152074ef4d64581c5a7f3c6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
/*
* Copyright (C) 2016 "IoT.bzh"
* Author 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.
*
* reference:
* amixer contents; amixer controls;
* http://www.tldp.org/HOWTO/Alsa-sound-6.html
*/
#ifndef FILESCAN_UTILS_H
#define FILESCAN_UTILS_H
#ifdef __cplusplus
extern "C" {
#endif
#include <afb/afb-binding.h>
#if((AFB_BINDING_VERSION == 0) && defined(AFB_BINDING_WANT_DYNAPI))
extern afb_dynapi *AFB_default;
#define AFB_DEBUG(...) AFB_DYNAPI_DEBUG(AFB_default, __VA_ARGS__)
#endif
#include <json-c/json.h>
#ifndef CONTROL_MAXPATH_LEN
#define CONTROL_MAXPATH_LEN 255
#endif
/**
* @brief enum describing which mode to use in ScanForConfig function
*
*/
typedef enum {
CTL_SCAN_FLAT=0, /**< Simple flat search */
CTL_SCAN_RECURSIVE=1, /**< Recursive search */
} CtlScanDirModeT;
/**
* @brief Get rid of the binder name prefix 'afbd-'
*
* @param name will be typically the full binder name
*
* @return const char*
*/
extern const char *GetMiddleName(const char *name);
/**
* @brief Get the Binder Name without the prefix set by the AGL appfw 'afbd-'
*
* @return const char* the Binder name without the prefix.
*/
extern const char *GetBinderName();
/**
* @brief Scan a directory searching all files matching pattern:
* 'prefix*extention'.
*
* @param searchPath directory where to begin the searching
* @param mode either or not the search will be recursive.
* @param prefix file prefix that will be looking for
* @param extention file extention that will be looking for
*
* @return json_object* a json_object array of object with 2 parts a 'fullpath'
* describing the fullpath to reach the file and 'filename' containing the
* matched files.
*/
extern json_object* ScanForConfig (const char* searchPath, CtlScanDirModeT mode, const char *prefix, const char *extension);
/**
* @brief Get the Binding root directory file descriptor object
*
* @param dynapi : Could be NULL if you don't use dynamic api
*
* @return char* string representing the path to binding root directory.
*/
extern char *GetBindingDirPath_(int fd);
#if(AFB_BINDING_VERSION == 2)
static inline char *GetBindingDirPath_v2()
{
return GetBindingDirPath_(afb_daemon_rootdir_get_fd_v2());
}
__attribute__((alias("GetBindingDirPath_v2")))
static char *GetBindingDirPath();
#else
static char *GetBindingDirPath_v3(struct afb_api_x3* api)
{
return GetBindingDirPath_(afb_api_x3_rootdir_get_fd(api));
}
__attribute__((alias("GetBindingDirPath_v3")))
static char *GetBindingDirPath(struct afb_api_x3* api);
#endif
/**
* @brief Get the environment directory colon separated path list. This take the
* prefix add the binder's name then the suffix as environment variable name and
* also search for another variable without the binder's name (so only
* prefix+suffix).
*
* @param prefix Environment variable prefix
* @param suffix Environment variable suffix
*
* @return const char* a string representing a colon separated path list or NULL
* is case of error or none environment variables found.
*/
extern const char *getEnvDirList(const char *prefix, const char *suffix);
#ifdef __cplusplus
}
#endif
#endif /* FILESCAN_UTILS_H */
|