Lydia - Printhead
Pos3Analog Class Reference

#include <3PosAnalog.h>

Inheritance diagram for Pos3Analog:
[legend]

Public Types

enum  POS3_DIRECTION { UP = 1, MIDDLE = 0, DOWN = 2, INVALID = 10 }
 

Public Member Functions

short debug ()
 
short info (short val0, short val1)
 
short loop ()
 
short onRegisterMethods (Bridge *bridge)
 
 Pos3Analog (Component *owner, short _upPin, short _downPin, short _id, short _addr)
 
short setup ()
 

Public Attributes

short downPin
 
int last_switch = -1
 
short upPin
 
int value = -1
 

Private Member Functions

bool changed ()
 
bool clear ()
 
String getRegisterDescription (short reg)
 
int read ()
 

Detailed Description

Definition at line 13 of file 3PosAnalog.h.

Member Enumeration Documentation

◆ POS3_DIRECTION

Enumerator
UP 
MIDDLE 
DOWN 
INVALID 

Definition at line 16 of file 3PosAnalog.h.

17  {
18  UP = 1,
19  MIDDLE = 0,
20  DOWN = 2,
21  INVALID = 10
22  };

Constructor & Destructor Documentation

◆ Pos3Analog()

Pos3Analog::Pos3Analog ( Component *  owner,
short  _upPin,
short  _downPin,
short  _id,
short  _addr 
)
inline

Definition at line 24 of file 3PosAnalog.h.

28  : ModbusValue<int>(_addr, MB_FC::MB_FC_READ_REGISTERS),
29  Component("Pos3Analog", _id, Component::COMPONENT_DEFAULT, owner),
30  upPin(_upPin),
31  downPin(_downPin)
32  //registerMode(MB_REGISTER_MODE::E_MB_REGISTER_MODE_READ)
33  {
34  // setFlag(OBJECT_RUN_FLAGS::E_OF_DEBUG);
35  SBI(nFlags, OBJECT_NET_CAPS::E_NCAPS_MODBUS);
36  setRegisterMode(MB_REGISTER_MODE::E_MB_REGISTER_MODE_READ);
37  }

Member Function Documentation

◆ changed()

bool Pos3Analog::changed ( )
inlineprivate

Definition at line 110 of file 3PosAnalog.h.

111  {
112  return last_switch != value;
113  }

◆ clear()

bool Pos3Analog::clear ( )
inlineprivate

Definition at line 115 of file 3PosAnalog.h.

116  {
117  last_switch = value;
118  return E_OK;
119  }

◆ debug()

short Pos3Analog::debug ( )
inline

Definition at line 50 of file 3PosAnalog.h.

51  {
52  return info(0, 0);
53  }

◆ getRegisterDescription()

String Pos3Analog::getRegisterDescription ( short  reg)
inlineprivate

Definition at line 122 of file 3PosAnalog.h.

123  {
124  char buff[255];
125  short s = snprintf(buff, 255, "- Read Position : Address=%d(%X) -> [Up:%d Middle:%d Down:%d]", addr, addr, POS3_DIRECTION::UP, POS3_DIRECTION::MIDDLE, POS3_DIRECTION::DOWN);
126  // snprintf (buff +s, 255 , "- Read Position : Address=%d(%X) -> [Up:%d Middle:%d Down:%d] ", addr, addr, POS3_DIRECTION::UP, POS3_DIRECTION::MIDDLE, POS3_DIRECTION::DOWN);
127  return String(buff);
128  }

◆ info()

short Pos3Analog::info ( short  val0,
short  val1 
)
inline

Definition at line 45 of file 3PosAnalog.h.

46  {
47  Log.verboseln("3PosAnalog::info - Pin-0=%d | Pin-1=%d | Key=%d | Addr=%d | Val=%d | NetVal=%d ", upPin, downPin, id, addr, value, netVal());
48  return E_OK;
49  }

◆ loop()

short Pos3Analog::loop ( )
inline

Definition at line 55 of file 3PosAnalog.h.

56  {
57  if (now - last < ANALOG_SWITCH_READ_INTERVAL)
58  {
59  return E_OK;
60  }
61  last = now;
62  int newDirection = read();
63  if (newDirection != value)
64  {
66  }
67  value = newDirection;
68  onSet(value);
69  return value;
70  }

◆ onRegisterMethods()

short Pos3Analog::onRegisterMethods ( Bridge *  bridge)
inline

Definition at line 77 of file 3PosAnalog.h.

78  {
79  bridge->registerMemberFunction(id, this, C_STR("setFlag"), (ComponentFnPtr)&Pos3Analog::setFlag);
80  //bridge->registerMemberFunction(id, this, C_STR("clearFlag"), (ComponentFnPtr)&Pos3Analog::clearFlag);
81  bridge->registerMemberFunction(id, this, C_STR("info"), (ComponentFnPtr)&Pos3Analog::info);
82  return E_OK;
83  }

◆ read()

int Pos3Analog::read ( )
inlineprivate

Definition at line 86 of file 3PosAnalog.h.

87  {
88  bool up = RANGE(analogRead(upPin), ANALOG_INPUT_MIN_THRESHOLD_0, 1000);
89  bool down = RANGE(analogRead(downPin), ANALOG_INPUT_MIN_THRESHOLD_0, 1000);
90  int newDirection = 0;
91  if (up)
92  {
93  newDirection = POS3_DIRECTION::DOWN;
94  }
95  if (down)
96  {
97  newDirection = POS3_DIRECTION::UP;
98  }
99  if (!up && !down)
100  {
101  newDirection = POS3_DIRECTION::MIDDLE;
102  }
103  if (up && down)
104  {
105  newDirection = POS3_DIRECTION::INVALID;
106  }
107  return newDirection;
108  }

◆ setup()

short Pos3Analog::setup ( )
inline

Definition at line 39 of file 3PosAnalog.h.

40  {
41  last_switch = read();
42  return E_OK;
43  }

Member Data Documentation

◆ downPin

short Pos3Analog::downPin

Definition at line 75 of file 3PosAnalog.h.

◆ last_switch

int Pos3Analog::last_switch = -1

Definition at line 72 of file 3PosAnalog.h.

◆ upPin

short Pos3Analog::upPin

Definition at line 74 of file 3PosAnalog.h.

◆ value

int Pos3Analog::value = -1

Definition at line 73 of file 3PosAnalog.h.


The documentation for this class was generated from the following file:
Pos3Analog::MIDDLE
@ MIDDLE
Definition: 3PosAnalog.h:19
ANALOG_INPUT_MIN_THRESHOLD_0
#define ANALOG_INPUT_MIN_THRESHOLD_0
Definition: config_adv.h:119
Pos3Analog::INVALID
@ INVALID
Definition: 3PosAnalog.h:21
Pos3Analog::value
int value
Definition: 3PosAnalog.h:73
ANALOG_SWITCH_READ_INTERVAL
#define ANALOG_SWITCH_READ_INTERVAL
Definition: config_adv.h:111
Pos3Analog::upPin
short upPin
Definition: 3PosAnalog.h:74
Pos3Analog::info
short info(short val0, short val1)
Definition: 3PosAnalog.h:45
Pos3Analog::read
int read()
Definition: 3PosAnalog.h:86
E_OK
#define E_OK
Definition: enums.h:11
Pos3Analog::downPin
short downPin
Definition: 3PosAnalog.h:75
Pos3Analog::DOWN
@ DOWN
Definition: 3PosAnalog.h:20
Pos3Analog::last_switch
int last_switch
Definition: 3PosAnalog.h:72
Pos3Analog::UP
@ UP
Definition: 3PosAnalog.h:18