blob: b348a1a4b2860c480bd7f1b62b0ddb2aaaa2b2f7 [file] [log] [blame]
Ivan Kluchnikove3a05962012-03-18 15:48:51 +04001/*
2* Copyright 2012 Thomas Cooper <tacooper@vt.edu>
3*
4* This software is distributed under the terms of the GNU Affero Public License.
5* See the COPYING file in the main directory for details.
6*
7* This use of this software may be subject to additional restrictions.
8* See the LEGAL file in the main directory for details.
9
10This program is free software: you can redistribute it and/or modify
11it under the terms of the GNU Affero General Public License as published by
12the Free Software Foundation, either version 3 of the License, or
13(at your option) any later version.
14
15This program is distributed in the hope that it will be useful,
16but WITHOUT ANY WARRANTY; without even the implied warranty of
17MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18GNU Affero General Public License for more details.
19
20You should have received a copy of the GNU Affero General Public License
21along with this program. If not, see <http://www.gnu.org/licenses/>.
22
23*/
24
25#ifndef GSML1PRIM_H
26#define GSML1PRIM_H
27
28#include <stdint.h>
29
30typedef enum GsmL1_SubCh_t {
31GsmL1_SubCh_NA,
32} GsmL1_SubCh_t;
33
34typedef enum GsmL1_Sapi_t {
35GsmL1_Sapi_Fcch,
36GsmL1_Sapi_Sch,
37GsmL1_Sapi_Sacch,
38GsmL1_Sapi_Sdcch,
39GsmL1_Sapi_Bcch,
40GsmL1_Sapi_Pch,
41GsmL1_Sapi_Agch,
42GsmL1_Sapi_Cbch,
43GsmL1_Sapi_Rach,
44GsmL1_Sapi_TchF,
45GsmL1_Sapi_FacchF,
46GsmL1_Sapi_TchH,
47GsmL1_Sapi_FacchH,
48GsmL1_Sapi_Nch,
49GsmL1_Sapi_Pdtch,
50GsmL1_Sapi_Pacch,
51GsmL1_Sapi_Pbcch,
52GsmL1_Sapi_Pagch,
53GsmL1_Sapi_Ppch,
54GsmL1_Sapi_Pnch,
55GsmL1_Sapi_Ptcch,
56GsmL1_Sapi_Prach,
57GsmL1_Sapi_Idle,
58GsmL1_Sapi_NUM,
59} GsmL1_Sapi_t;
60
61typedef enum GsmL1_Status_t {
62GsmL1_Status_Success,
63GsmL1_Status_Generic,
64GsmL1_Status_NoMemory,
65GsmL1_Status_Timeout,
66GsmL1_Status_InvalidParam,
67GsmL1_Status_Busy,
68GsmL1_Status_NoRessource,
69GsmL1_Status_Uninitialized,
70GsmL1_Status_NullInterface,
71GsmL1_Status_NullFctnPtr,
72GsmL1_Status_BadCrc,
73GsmL1_Status_BadUsf,
74GsmL1_Status_InvalidCPS,
75GsmL1_Status_UnexpectedBurst,
76GsmL1_Status_UnavailCodec,
77GsmL1_Status_CriticalError,
78GsmL1_Status_OverheatError,
79GsmL1_Status_DeviceError,
80GsmL1_Status_FacchError,
81GsmL1_Status_AlreadyDeactivated,
82GsmL1_Status_TxBurstFifoOvrn,
83GsmL1_Status_TxBurstFifoUndr,
84GsmL1_Status_NotSynchronized,
85GsmL1_Status_Unsupported,
86GSML1_STATUS_NUM,
87} GsmL1_Status_t;
88
89typedef enum GsmL1_PrimId_t {
90GsmL1_PrimId_MphInitReq,
91GsmL1_PrimId_MphCloseReq,
92GsmL1_PrimId_MphConnectReq,
93GsmL1_PrimId_MphDisconnectReq,
94GsmL1_PrimId_MphActivateReq,
95GsmL1_PrimId_MphDeactivateReq,
96GsmL1_PrimId_MphConfigReq,
97GsmL1_PrimId_MphMeasureReq,
98GsmL1_PrimId_MphInitCnf,
99GsmL1_PrimId_MphCloseCnf,
100GsmL1_PrimId_MphConnectCnf,
101GsmL1_PrimId_MphDisconnectCnf,
102GsmL1_PrimId_MphActivateCnf,
103GsmL1_PrimId_MphDeactivateCnf,
104GsmL1_PrimId_MphConfigCnf,
105GsmL1_PrimId_MphMeasureCnf,
106GsmL1_PrimId_MphTimeInd,
107GsmL1_PrimId_MphSyncInd,
108GsmL1_PrimId_PhEmptyFrameReq,
109GsmL1_PrimId_PhDataReq,
110GsmL1_PrimId_PhConnectInd,
111GsmL1_PrimId_PhReadyToSendInd,
112GsmL1_PrimId_PhDataInd,
113GsmL1_PrimId_PhRaInd,
114GsmL1_PrimId_NUM,
115} GsmL1_PrimId_t;
116
117typedef enum GsmL1_Dir_t {
118GsmL1_Dir_TxDownlink,
119GsmL1_Dir_RxUplink,
120} GsmL1_Dir_t;
121
122typedef enum GsmL1_DevType_t {
123GsmL1_DevType_TxdRxu,
124} GsmL1_DevType_t;
125
126typedef enum GsmL1_TchPlType_t {
127GsmL1_TchPlType_NA,
128GsmL1_TchPlType_Efr,
129GsmL1_TchPlType_Fr,
130GsmL1_TchPlType_Hr,
131GsmL1_TchPlType_Amr,
132GsmL1_TchPlType_Amr_SidBad,
133GsmL1_TchPlType_Amr_Onset,
134GsmL1_TchPlType_Amr_Ratscch,
135GsmL1_TchPlType_Amr_SidUpdateInH,
136GsmL1_TchPlType_Amr_SidFirstP1,
137GsmL1_TchPlType_Amr_SidFirstP2,
138GsmL1_TchPlType_Amr_SidFirstInH,
139GsmL1_TchPlType_Amr_RatscchMarker,
140GsmL1_TchPlType_Amr_RatscchData,
141} GsmL1_TchPlType_t;
142
143typedef enum GsmL1_ConfigParamId_t {
144GsmL1_ConfigParamId_SetNbTsc,
145GsmL1_ConfigParamId_SetTxPowerLevel,
146GsmL1_ConfigParamId_SetLogChParams,
147GsmL1_ConfigParamId_SetCipheringParams,
148} GsmL1_ConfigParamId_t;
149
150typedef struct GsmL1_DeviceParam_t {
151enum GsmL1_DevType_t devType;
152int freqBand;
153uint16_t u16Arfcn;
154uint16_t u16BcchArfcn;
155uint8_t u8NbTsc;
156uint8_t u8Ncc;
157float fRxPowerLevel;
158float fTxPowerLevel;
159} GsmL1_DeviceParam_t;
160
161typedef struct GsmL1_MsgUnitParam_t {
162uint8_t u8Buffer[256];
163uint8_t u8Size;
164} GsmL1_MsgUnitParam_t;
165
166typedef struct GsmL1_MeasParam_t {
167float fRssi;
168float fLinkQuality;
169float fBer;
170int16_t i16BurstTiming;
171} GsmL1_MeasParam_t;
172
173typedef struct GsmL1_LogChParam_t {
174union {
175struct {
176enum GsmL1_TchPlType_t tchPlType;
177
178enum {
179GsmL1_AmrCmiPhase_NA,
180GsmL1_AmrCmiPhase_Odd,
181} amrCmiPhase;
182
183enum {
184GsmL1_AmrCodecMode_Unset,
185} amrInitCodecMode;
186
187enum {
188GsmL1_AmrCodec_Unset,
189GsmL1_AmrCodec_4_75,
190GsmL1_AmrCodec_5_15,
191GsmL1_AmrCodec_5_9,
192GsmL1_AmrCodec_6_7,
193GsmL1_AmrCodec_7_4,
194GsmL1_AmrCodec_7_95,
195GsmL1_AmrCodec_10_2,
196GsmL1_AmrCodec_12_2,
197} amrActiveCodecSet[8];
198} tch;
199
200struct {
201uint8_t u8Bsic;
202uint8_t u8NbrOfAgch;
203} rach;
204
205struct {
206uint8_t u8MsPowerLevel;
207} sacch;
208
209struct {
210uint8_t u8NbrOfAgch;
211} agch;
212};
213} GsmL1_LogChParam_t;
214
215typedef enum GsmL1_LogChComb_t {
216GsmL1_LogChComb_0,
217GsmL1_LogChComb_I,
218GsmL1_LogChComb_II,
219GsmL1_LogChComb_IV,
220GsmL1_LogChComb_V,
221GsmL1_LogChComb_VII,
222GsmL1_LogChComb_XIII,
223} GsmL1_LogChComb_t;
224
225enum {
226GsmL1_FreqBand_850,
227GsmL1_FreqBand_900,
228GsmL1_FreqBand_1800,
229GsmL1_FreqBand_1900,
230};
231
232typedef struct GsmL1_MphInitReq_t {
233struct GsmL1_DeviceParam_t deviceParam;
234} GsmL1_MphInitReq_t;
235
236typedef struct GsmL1_MphCloseReq_t {
237uint32_t hLayer1;
238} GsmL1_MphCloseReq_t;
239
240typedef struct GsmL1_MphConnectReq_t {
241uint32_t hLayer1;
242uint8_t u8Tn;
243enum GsmL1_LogChComb_t logChComb;
244} GsmL1_MphConnectReq_t;
245
246typedef struct GsmL1_MphDisconnectReq_t {
247uint32_t hLayer1;
248} GsmL1_MphDisconnectReq_t;
249
250typedef struct GsmL1_MphActivateReq_t {
251uint32_t hLayer1;
252struct GsmL1_LogChParam_t logChPrm;
253uint8_t u8Tn;
254enum GsmL1_SubCh_t subCh;
255enum GsmL1_Dir_t dir;
256enum GsmL1_Sapi_t sapi;
257uint32_t hLayer2;
258float fBFILevel;
259} GsmL1_MphActivateReq_t;
260
261typedef struct GsmL1_MphDeactivateReq_t {
262uint32_t hLayer1;
263uint8_t u8Tn;
264enum GsmL1_SubCh_t subCh;
265enum GsmL1_Dir_t dir;
266enum GsmL1_Sapi_t sapi;
267} GsmL1_MphDeactivateReq_t;
268
269typedef struct GsmL1_ConfigParam_t {
270struct {
271enum GsmL1_Sapi_t sapi;
272uint8_t u8Tn;
273enum GsmL1_SubCh_t subCh;
274enum GsmL1_Dir_t dir;
275struct GsmL1_LogChParam_t logChParams;
276} setLogChParams;
277} GsmL1_ConfigParam_t;
278
279typedef struct GsmL1_MphConfigReq_t {
280uint32_t hLayer1;
281enum GsmL1_ConfigParamId_t cfgParamId;
282struct GsmL1_ConfigParam_t cfgParams;
283} GsmL1_MphConfigReq_t;
284
285typedef struct GsmL1_MphConfigCnf_t {
286enum GsmL1_Status_t status;
287enum GsmL1_ConfigParamId_t cfgParamId;
288struct GsmL1_ConfigParam_t cfgParams;
289} GsmL1_MphConfigCnf_t;
290
291typedef struct GsmL1_MphMeasureReq_t {
292uint32_t hLayer1;
293} GsmL1_MphMeasureReq_t;
294
295typedef struct GsmL1_MphInitCnf_t {
296uint32_t hLayer1;
297enum GsmL1_Status_t status;
298} GsmL1_MphInitCnf_t;
299
300typedef struct GsmL1_MphCloseCnf_t {
301enum GsmL1_Status_t status;
302} GsmL1_MphCloseCnf_t;
303
304typedef struct GsmL1_MphConnectCnf_t {
305enum GsmL1_Status_t status;
306} GsmL1_MphConnectCnf_t;
307
308typedef struct GsmL1_MphDisconnectCnf_t {
309enum GsmL1_Status_t status;
310} GsmL1_MphDisconnectCnf_t;
311
312typedef struct GsmL1_MphActivateCnf_t {
313enum GsmL1_Status_t status;
314uint8_t u8Tn;
315int sapi;
316} GsmL1_MphActivateCnf_t;
317
318typedef struct GsmL1_MphDeactivateCnf_t {
319enum GsmL1_Status_t status;
320uint8_t u8Tn;
321enum GsmL1_Sapi_t sapi;
322} GsmL1_MphDeactivateCnf_t;
323
324typedef struct GsmL1_MphMeasureCnf_t {
325enum GsmL1_Status_t status;
326} GsmL1_MphMeasureCnf_t;
327
328typedef struct GsmL1_MphTimeInd_t {
329uint32_t u32Fn;
330} GsmL1_MphTimeInd_t;
331
332typedef struct GsmL1_MphSyncInd_t {
333} GsmL1_MphSyncInd_t;
334
335typedef struct GsmL1_PhEmptyFrameReq_t {
336uint32_t hLayer1;
337uint8_t u8Tn;
338uint32_t u32Fn;
339enum GsmL1_Sapi_t sapi;
340enum GsmL1_SubCh_t subCh;
341uint8_t u8BlockNbr;
342} GsmL1_PhEmptyFrameReq_t;
343
344typedef struct GsmL1_PhDataReq_t {
345uint32_t hLayer1;
346uint8_t u8Tn;
347uint32_t u32Fn;
348enum GsmL1_Sapi_t sapi;
349enum GsmL1_SubCh_t subCh;
350uint8_t u8BlockNbr;
351struct GsmL1_MsgUnitParam_t msgUnitParam;
352} GsmL1_PhDataReq_t;
353
354typedef struct GsmL1_PhConnectInd_t {
Ivan Kluchnikov27482ba2012-04-17 20:36:44 +0400355uint8_t u8Tn;
356uint8_t u8Tsc;
357uint16_t u16Arfcn;
Ivan Kluchnikove3a05962012-03-18 15:48:51 +0400358} GsmL1_PhConnectInd_t;
359
360typedef struct GsmL1_PhReadyToSendInd_t {
361uint32_t hLayer1;
362uint8_t u8Tn;
363uint32_t u32Fn;
364enum GsmL1_Sapi_t sapi;
365enum GsmL1_SubCh_t subCh;
366uint8_t u8BlockNbr;
367uint32_t hLayer2;
368} GsmL1_PhReadyToSendInd_t;
369
370typedef struct GsmL1_PhDataInd_t {
371struct GsmL1_MeasParam_t measParam;
372struct GsmL1_MsgUnitParam_t msgUnitParam;
373enum GsmL1_Sapi_t sapi;
374uint32_t hLayer2;
375} GsmL1_PhDataInd_t;
376
377typedef struct GsmL1_PhRaInd_t {
378struct GsmL1_MeasParam_t measParam;
379struct GsmL1_MsgUnitParam_t msgUnitParam;
380uint32_t u32Fn;
381uint32_t hLayer2;
382} GsmL1_PhRaInd_t;
383
384typedef struct GsmL1_Prim_t {
385union {
386struct GsmL1_MphInitReq_t mphInitReq;
387struct GsmL1_MphCloseReq_t mphCloseReq;
388struct GsmL1_MphConnectReq_t mphConnectReq;
389struct GsmL1_MphDisconnectReq_t mphDisconnectReq;
390struct GsmL1_MphActivateReq_t mphActivateReq;
391struct GsmL1_MphDeactivateReq_t mphDeactivateReq;
392struct GsmL1_MphConfigReq_t mphConfigReq;
393struct GsmL1_MphMeasureReq_t mphMeasureReq;
394struct GsmL1_MphInitCnf_t mphInitCnf;
395struct GsmL1_MphCloseCnf_t mphCloseCnf;
396struct GsmL1_MphConnectCnf_t mphConnectCnf;
397struct GsmL1_MphDisconnectCnf_t mphDisconnectCnf;
398struct GsmL1_MphActivateCnf_t mphActivateCnf;
399struct GsmL1_MphDeactivateCnf_t mphDeactivateCnf;
400struct GsmL1_MphConfigCnf_t mphConfigCnf;
401struct GsmL1_MphMeasureCnf_t mphMeasureCnf;
402struct GsmL1_MphTimeInd_t mphTimeInd;
403struct GsmL1_MphSyncInd_t mphSyncInd;
404struct GsmL1_PhEmptyFrameReq_t phEmptyFrameReq;
405struct GsmL1_PhDataReq_t phDataReq;
406struct GsmL1_PhConnectInd_t phConnectInd;
407struct GsmL1_PhReadyToSendInd_t phReadyToSendInd;
408struct GsmL1_PhDataInd_t phDataInd;
409struct GsmL1_PhRaInd_t phRaInd;
410} u;
411
412enum GsmL1_PrimId_t id;
413} GsmL1_Prim_t;
Ivan Kluchnikov1efac072012-04-11 21:39:53 +0400414
415#endif