FireBirdLib - Topfield TMS PVR TAP Programming Library
HDD_TAP_SendEvent.c
Go to the documentation of this file.
1#include "FBLib_tap.h"
2
3dword HDD_TAP_SendEvent(dword TAPID, bool AllowParamInterception, word event, dword param1, dword param2)
4{
6
7 dword *curTapTask;
8 tTMSTAPTaskTable *TMSTAPTaskTable;
9 dword Ret = 0, i;
10
11 dword (*TAPEventHandler)(word Event, dword Param1, dword Param2) = NULL;
12
13 TMSTAPTaskTable = (tTMSTAPTaskTable*)FIS_vTAPTable();
14 curTapTask = (dword*)FIS_vCurTapTask();
15
16 if(!TMSTAPTaskTable || !curTapTask || (!LibInitialized && !InitTAPex()))
17 {
18 TRACEEXIT();
19 return 0;
20 }
21
22 if(TAPID)
23 {
24 int Index = HDD_TAP_GetIndexByID(TAPID);
25
26 if(Index < 0 || Index >= TAP_MAX)
27 {
28 TRACEEXIT();
29 return 0;
30 }
31
32 TAPEventHandler = (void*)TMSTAPTaskTable[Index].TAP_EventHandler;
33 *curTapTask = Index;
34 Ret = TAPEventHandler(event, param1, param2);
35 *curTapTask = TAP_TableIndex;
36 if((Ret == 0) && AllowParamInterception)
37 {
38 TRACEEXIT();
39 return 0;
40 }
41 }
42 else
43 {
44 for(i = 0 ; i < TAP_MAX; ++i)
45 {
46 TAPEventHandler = (void*)TMSTAPTaskTable[i].TAP_EventHandler;
47 if(TAPEventHandler)
48 {
49 *curTapTask = i;
50 Ret = TAPEventHandler(event, param1, param2);
51 *curTapTask = TAP_TableIndex;
52
53 // Zero return value should mean don't pass the value on to other TAPs
54 // In this case we don't even call the remaining TAPs
55 if((Ret == 0) && AllowParamInterception)
56 {
57 TRACEEXIT();
58 return 0;
59 }
60 }
61 }
62 }
63
64 TRACEEXIT();
65 return Ret;
66}
bool LibInitialized
Definition: InitTAPex.c:8
dword FIS_vTAPTable(void)
Definition: FIS_vTAPTable.c:3
dword FIS_vCurTapTask(void)
dword HDD_TAP_SendEvent(dword TAPID, bool AllowParamInterception, word event, dword param1, dword param2)
bool InitTAPex(void)
Definition: InitTAPex.c:10
#define TAP_MAX
Definition: libFireBird.h:60
#define TRACEEXIT()
Definition: libFireBird.h:1244
#define TRACEENTER()
Definition: libFireBird.h:1243
int HDD_TAP_GetIndexByID(dword TAPID)
dword TAP_TableIndex
Definition: InitTAPex.c:7