9b91ec69d9c410ccd5f38e521a0b1b2eda4f8637
[src/app-framework-binder.git] / plugins / radio / radio-api.h
1 /*
2  * Copyright (C) 2015, 2016 "IoT.bzh"
3  * Author "Manuel Bachmann"
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *   http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17
18 #ifndef RADIO_API_H
19 #define RADIO_API_H
20
21 /* -------------- PLUGIN DEFINITIONS ----------------- */
22
23 #define MAX_RADIO 10
24 typedef enum { FM, AM } Mode;
25
26 /* structure holding one radio device with current usage status */
27 typedef struct {
28     int   idx;
29     char *name;
30     int  used;
31 } radioDevT;
32
33 /* global plugin handle, should store everything we may need */
34 typedef struct {
35   radioDevT *radios[MAX_RADIO];  // pointer to existing radio
36   unsigned int devCount;
37 } pluginHandleT;
38
39 /* private client context [will be destroyed when client leaves] */
40 typedef struct {
41     radioDevT *radio;         /* pointer to client radio            */
42     int idx;                  /* radio index within global array    */
43     Mode mode;                /* radio mode: AM/FM                  */
44     float freq;               /* radio frequency (Mhz)              */
45     unsigned char mute;       /* radio muted: 0(false)/1(true)      */
46     unsigned char is_playing; /* radio is playing: 0(false)/1(true) */
47 } radioCtxHandleT;
48
49 #endif /* RADIO_API_H */