FireBirdLib - Topfield TMS PVR TAP Programming Library
HDD_TAP_Disable.c
Go to the documentation of this file.
1#include "FBLib_tap.h"
2
3bool HDD_TAP_Disable(dword TAPID, bool DisableEvents)
4{
6
7 int TAPIndex;
8 dword isDisabled;
9 tTMSTAPTaskTable *TMSTAPTaskTable;
10
11 TAPIndex = HDD_TAP_GetIndexByID(TAPID);
12 if((TAPIndex == -1) || (!LibInitialized && !InitTAPex()))
13 {
14 TRACEEXIT();
15 return FALSE;
16 }
17
18 //Don't disable ourself
19 if((dword)TAPIndex == TAP_TableIndex)
20 {
21 TRACEEXIT();
22 return FALSE;
23 }
24
25 //The TAP has already the requested state
26 isDisabled = HDD_TAP_isDisabled(TAPID);
27 if((isDisabled == 1) == DisableEvents)
28 {
29 TRACEEXIT();
30 return FALSE;
31 }
32
33 TMSTAPTaskTable = (tTMSTAPTaskTable*)FIS_vTAPTable();
34 if(!TMSTAPTaskTable)
35 {
36 TRACEEXIT();
37 return FALSE;
38 }
39
40 //The TAP will terminate soon
41 if(TMSTAPTaskTable[TAPIndex].Status != 1)
42 {
43 TRACEEXIT();
44 return FALSE;
45 }
46
47 //Abuse tTMSTAPTaskTable.unused5 as temporary storage for the event handler address
48 if(DisableEvents)
49 {
50 TMSTAPTaskTable[TAPIndex].unused5 = TMSTAPTaskTable[TAPIndex].TAP_EventHandler;
51 TMSTAPTaskTable[TAPIndex].TAP_EventHandler = (dword)&HDD_TAP_DisabledEventHandler;
52 }
53 else
54 {
55 TMSTAPTaskTable[TAPIndex].TAP_EventHandler = TMSTAPTaskTable[TAPIndex].unused5;
56 TMSTAPTaskTable[TAPIndex].unused5 = 0;
57 }
58
59 TRACEEXIT();
60 return TRUE;
61}
bool LibInitialized
Definition: InitTAPex.c:8
dword HDD_TAP_DisabledEventHandler(word, dword, dword)
dword FIS_vTAPTable(void)
Definition: FIS_vTAPTable.c:3
bool HDD_TAP_Disable(dword TAPID, bool DisableEvents)
bool InitTAPex(void)
Definition: InitTAPex.c:10
#define TRACEEXIT()
Definition: libFireBird.h:1244
dword HDD_TAP_isDisabled(dword TAPID)
#define TRACEENTER()
Definition: libFireBird.h:1243
int HDD_TAP_GetIndexByID(dword TAPID)
dword TAP_TableIndex
Definition: InitTAPex.c:7