vdr  2.4.1
diseqc.h
Go to the documentation of this file.
1 /*
2  * diseqc.h: DiSEqC handling
3  *
4  * See the main source file 'vdr.c' for copyright information and
5  * how to reach the author.
6  *
7  * $Id: diseqc.h 4.1 2017/01/09 15:11:19 kls Exp $
8  */
9 
10 #ifndef __DISEQC_H
11 #define __DISEQC_H
12 
13 #include "config.h"
14 #include "positioner.h"
15 #include "thread.h"
16 
18 private:
19  void SendDiseqc(uint8_t *Codes, int NumCodes);
20 public:
21  cDiseqcPositioner(void);
22  virtual void Drive(ePositionerDirection Direction);
23  virtual void Step(ePositionerDirection Direction, uint Steps = 1);
24  virtual void Halt(void);
25  virtual void SetLimit(ePositionerDirection Direction);
26  virtual void DisableLimits(void);
27  virtual void EnableLimits(void);
28  virtual void StorePosition(uint Number);
29  virtual void RecalcPositions(uint Number);
30  virtual void GotoPosition(uint Number, int Longitude);
31  virtual void GotoAngle(int Longitude);
32  };
33 
34 class cScr : public cListObject {
35 private:
36  int devices;
37  int channel;
38  uint userBand;
39  int pin;
40  bool used;
41 public:
42  cScr(void);
43  bool Parse(const char *s);
44  int Devices(void) const { return devices; }
45  int Channel(void) const { return channel; }
46  uint UserBand(void) const { return userBand; }
47  int Pin(void) const { return pin; }
48  bool Used(void) const { return used; }
49  void SetUsed(bool Used) { used = Used; }
50  };
51 
52 class cScrs : public cConfig<cScr> {
53 private:
55 public:
56  bool Load(const char *FileName, bool AllowComments = false, bool MustExist = false);
57  cScr *GetUnused(int Device);
58  };
59 
60 extern cScrs Scrs;
61 
62 class cDiseqc : public cListObject {
63 public:
77  };
78  enum { MaxDiseqcCodes = 6 };
79 private:
80  int devices;
81  int source;
82  int slof;
84  int lof;
85  mutable int position;
86  mutable int scrBank;
87  char *commands;
88  bool parsing;
89  int SetScrFrequency(int SatFrequency, const cScr *Scr, uint8_t *Codes) const;
90  int SetScrPin(const cScr *Scr, uint8_t *Codes) const;
91  const char *Wait(const char *s) const;
92  const char *GetPosition(const char *s) const;
93  const char *GetScrBank(const char *s) const;
94  const char *GetCodes(const char *s, uchar *Codes = NULL, uint8_t *MaxCodes = NULL) const;
95 public:
96  cDiseqc(void);
97  ~cDiseqc();
98  bool Parse(const char *s);
99  eDiseqcActions Execute(const char **CurrentAction, uchar *Codes, uint8_t *MaxCodes, const cScr *Scr, int *Frequency) const;
115  int Devices(void) const { return devices; }
118  int Source(void) const { return source; }
120  int Slof(void) const { return slof; }
122  char Polarization(void) const { return polarization; }
124  int Lof(void) const { return lof; }
126  int Position(void) const { return position; }
132  bool IsScr(void) const { return scrBank >= 0; }
134  const char *Commands(void) const { return commands; }
136  };
137 
138 class cDiseqcs : public cConfig<cDiseqc> {
139 public:
140  bool Load(const char *FileName, bool AllowComments = false, bool MustExist = false);
141  const cDiseqc *Get(int Device, int Source, int Frequency, char Polarization, const cScr **Scr) const;
149  };
150 
151 extern cDiseqcs Diseqcs;
152 
153 #endif //__DISEQC_H
cDiseqc::daNone
@ daNone
Definition: diseqc.h:65
cDiseqc::commands
char * commands
Definition: diseqc.h:87
cScrs::Load
bool Load(const char *FileName, bool AllowComments=false, bool MustExist=false)
Definition: diseqc.c:184
cDiseqcPositioner::EnableLimits
virtual void EnableLimits(void)
Definition: diseqc.c:111
cDiseqcPositioner::DisableLimits
virtual void DisableLimits(void)
Definition: diseqc.c:105
cDiseqc::daPositionN
@ daPositionN
Definition: diseqc.h:72
cScr::cScr
cScr(void)
Definition: diseqc.c:150
cScr::channel
int channel
Definition: diseqc.h:37
cDiseqc::GetCodes
const char * GetCodes(const char *s, uchar *Codes=NULL, uint8_t *MaxCodes=NULL) const
Definition: diseqc.c:361
cDiseqc::daVoltage18
@ daVoltage18
Definition: diseqc.h:69
cDiseqc::daMiniB
@ daMiniB
Definition: diseqc.h:71
cScr::UserBand
uint UserBand(void) const
Definition: diseqc.h:46
cDiseqcPositioner
Definition: diseqc.h:17
cDiseqc::source
int source
Definition: diseqc.h:81
cConfig< cScr >::FileName
const char * FileName(void)
Definition: config.h:119
cDiseqc::Wait
const char * Wait(const char *s) const
Definition: diseqc.c:307
cScr::used
bool used
Definition: diseqc.h:40
cDiseqc::lof
int lof
Definition: diseqc.h:84
cDiseqcPositioner::Drive
virtual void Drive(ePositionerDirection Direction)
Definition: diseqc.c:78
cDiseqcPositioner::SetLimit
virtual void SetLimit(ePositionerDirection Direction)
Definition: diseqc.c:99
cDiseqc::position
int position
Definition: diseqc.h:85
cDiseqcs
Definition: diseqc.h:138
cDiseqcPositioner::Halt
virtual void Halt(void)
Definition: diseqc.c:93
cDiseqc
Definition: diseqc.h:62
cDiseqc::daScr
@ daScr
Definition: diseqc.h:74
cScr
Definition: diseqc.h:34
cDiseqc::polarization
char polarization
Definition: diseqc.h:83
cDiseqc::GetScrBank
const char * GetScrBank(const char *s) const
Definition: diseqc.c:343
cDiseqcPositioner::GotoPosition
virtual void GotoPosition(uint Number, int Longitude)
Move the dish to the satellite position stored under the given Number.
Definition: diseqc.c:129
cMutex
Definition: thread.h:67
cPositioner::ePositionerDirection
ePositionerDirection
Definition: positioner.h:83
cListObject
Definition: tools.h:493
cDiseqcPositioner::StorePosition
virtual void StorePosition(uint Number)
Definition: diseqc.c:117
cDiseqc::Execute
eDiseqcActions Execute(const char **CurrentAction, uchar *Codes, uint8_t *MaxCodes, const cScr *Scr, int *Frequency) const
Parses the DiSEqC commands and returns the appropriate action code with every call.
Definition: diseqc.c:402
cScr::devices
int devices
Definition: diseqc.h:36
cScr::userBand
uint userBand
Definition: diseqc.h:38
cDiseqc::cDiseqc
cDiseqc(void)
Definition: diseqc.c:206
uchar
unsigned char uchar
Definition: tools.h:31
cScrs::mutex
cMutex mutex
Definition: diseqc.h:54
cPositioner
A steerable satellite dish generally points to the south on the northern hemisphere,...
Definition: positioner.h:31
cDiseqc::parsing
bool parsing
Definition: diseqc.h:88
Commands
cNestedItemList Commands
Definition: config.c:275
cDiseqc::daMiniA
@ daMiniA
Definition: diseqc.h:70
cScr::SetUsed
void SetUsed(bool Used)
Definition: diseqc.h:49
cDiseqcPositioner::GotoAngle
virtual void GotoAngle(int Longitude)
Move the dish to the given angular position.
Definition: diseqc.c:136
cDiseqc::Parse
bool Parse(const char *s)
Definition: diseqc.c:224
cDiseqc::slof
int slof
Definition: diseqc.h:82
cScrs
Definition: diseqc.h:52
cDiseqc::scrBank
int scrBank
Definition: diseqc.h:86
cScr::Pin
int Pin(void) const
Definition: diseqc.h:47
positioner.h
cScr::Used
bool Used(void) const
Definition: diseqc.h:48
cDiseqc::daToneOn
@ daToneOn
Definition: diseqc.h:67
cScrs::GetUnused
cScr * GetUnused(int Device)
Definition: diseqc.c:190
cDiseqc::daVoltage13
@ daVoltage13
Definition: diseqc.h:68
Scrs
cScrs Scrs
Definition: diseqc.c:182
cDiseqc::eDiseqcActions
eDiseqcActions
Definition: diseqc.h:64
cScr::Channel
int Channel(void) const
Definition: diseqc.h:45
cScr::Parse
bool Parse(const char *s)
Definition: diseqc.c:159
Diseqcs
cDiseqcs Diseqcs
Definition: diseqc.c:439
cDiseqc::GetPosition
const char * GetPosition(const char *s) const
Definition: diseqc.c:321
cDiseqc::~cDiseqc
~cDiseqc()
Definition: diseqc.c:219
cDiseqc::devices
int devices
Definition: diseqc.h:80
cDiseqc::daToneOff
@ daToneOff
Definition: diseqc.h:66
cDiseqc::SetScrFrequency
int SetScrFrequency(int SatFrequency, const cScr *Scr, uint8_t *Codes) const
Definition: diseqc.c:256
cScr::pin
int pin
Definition: diseqc.h:39
cDiseqc::daPositionA
@ daPositionA
Definition: diseqc.h:73
cConfig
Definition: config.h:106
cDiseqc::daWait
@ daWait
Definition: diseqc.h:76
config.h
cDiseqcPositioner::RecalcPositions
virtual void RecalcPositions(uint Number)
Definition: diseqc.c:123
cDiseqc::SetScrPin
int SetScrPin(const cScr *Scr, uint8_t *Codes) const
Definition: diseqc.c:281
cDiseqcPositioner::Step
virtual void Step(ePositionerDirection Direction, uint Steps=1)
Definition: diseqc.c:84
cScr::Devices
int Devices(void) const
Definition: diseqc.h:44
cDiseqcPositioner::cDiseqcPositioner
cDiseqcPositioner(void)
Definition: diseqc.c:51
cDiseqc::MaxDiseqcCodes
@ MaxDiseqcCodes
Definition: diseqc.h:78
thread.h
cDiseqc::daCodes
@ daCodes
Definition: diseqc.h:75
cDiseqcs::Get
const cDiseqc * Get(int Device, int Source, int Frequency, char Polarization, const cScr **Scr) const
Selects a DiSEqC entry suitable for the given Device and tuning parameters.
Definition: diseqc.c:447
cDiseqcs::Load
bool Load(const char *FileName, bool AllowComments=false, bool MustExist=false)
Definition: diseqc.c:441
cDiseqcPositioner::SendDiseqc
void SendDiseqc(uint8_t *Codes, int NumCodes)
Definition: diseqc.c:66