MotionLib  1.0.0
SamBuCa motion library
Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
edge::EdgeGrblDeviceBase Class Reference
Inheritance diagram for edge::EdgeGrblDeviceBase:
Inheritance graph
[legend]
Collaboration diagram for edge::EdgeGrblDeviceBase:
Collaboration graph
[legend]

Public Member Functions

 EdgeGrblDeviceBase (int lun, const std::string &driverPath=std::string())
 Construct a new EdgeGrblDevice. More...
 
void read () override
 fill LineBuffer with incoming bytes
 
void write (const std::string &data) override
 raw write some bytes More...
 
bool wait (const std::chrono::milliseconds &timeout) override
 wait for input More...
 
void wake () override
 wake thread waiting for input
 
void read (struct edge_reg *reg, uint32_t &value)
 Get a register value. More...
 
void read (struct edge_reg *reg, size_t offset, uint32_t &value)
 Get a register value at depth. More...
 
void read (struct edge_reg *reg, std::vector< uint32_t > &values)
 Get all registers. More...
 
void write (struct edge_reg *reg, uint32_t value)
 Write a value to register. More...
 
void write (struct edge_reg *reg, size_t offset, uint32_t value)
 Write a value to register. More...
 
struct fmc_mfe_hdl * getDrv () const
 get driver handler
 
- Public Member Functions inherited from grbl::GrblDeviceBase
void fetch (const std::chrono::milliseconds &timeout)
 wait for data and process it More...
 
virtual grbl::ErrorCode send (const std::string &cmd, std::function< bool(const std::string &)> msg={}, const std::chrono::milliseconds &timeout=defaultSendTimeout)
 send a command wait for reply More...
 
virtual grbl::ErrorCode sendRealtime (const std::string &cmd, std::function< bool(const std::string &)> msg={}, const std::chrono::milliseconds &timeout=defaultSendTimeout)
 send a realtime-command wait for reply More...
 
virtual bool takeLine (std::string &line)
 consume line from buffer More...
 

Protected Member Functions

void init (int lun, const std::string &driverPath)
 
void irqLoop ()
 Wait for irq using blocking API and set variables once available.
 
bool waitIrq (const std::chrono::milliseconds &timeout, const struct edge_reg *const expectedReg, uint32_t expectedBit)
 Wait for irq from given source. More...
 
void drvOpen (int lun, const std::string &simPath, bool isSim)
 Open FMC_MFE device with given driver. More...
 
void drvClose ()
 Close the driver.
 

Protected Attributes

int m_wakeFd [2]
 
struct fmc_mfe_hdl * m_edgeDrvHdl
 
std::vector< char > m_fifoBytes
 
- Protected Attributes inherited from grbl::GrblDeviceBase
ccut::LineBuffer m_buffer
 

Static Protected Attributes

static const std::string loggerCat {"edge:edgegrbldevice"}
 

Additional Inherited Members

- Public Attributes inherited from grbl::GrblDeviceBase
ccut::Signal< std::string > dataSignal
 
- Static Public Attributes inherited from grbl::GrblDeviceBase
static const std::chrono::milliseconds defaultSendTimeout
 

Detailed Description

Definition at line 50 of file EdgeGrblDeviceBase.hpp.

Constructor & Destructor Documentation

◆ EdgeGrblDeviceBase()

edge::EdgeGrblDeviceBase::EdgeGrblDeviceBase ( int  lun,
const std::string &  driverPath = std::string() 
)
explicit

Construct a new EdgeGrblDevice.

Parameters
lunLUN to use
driverPathPath of the sim library (leave empty for non-sim)

Definition at line 57 of file EdgeGrblDeviceBase.cpp.

Member Function Documentation

◆ drvOpen()

void edge::EdgeGrblDeviceBase::drvOpen ( int  lun,
const std::string &  simPath,
bool  isSim 
)
protected

Open FMC_MFE device with given driver.

Parameters
lunLUN of device to open
simPathPath with FMC_MFE sim driver location
isSimSet true if simulation driver should be opened

Definition at line 328 of file EdgeGrblDeviceBase.cpp.

◆ read() [1/3]

void edge::EdgeGrblDeviceBase::read ( struct edge_reg *  reg,
size_t  offset,
uint32_t &  value 
)

Get a register value at depth.

Parameters
[in]regregister to read
[in]offsetoffset in the register (depth)
[out]valueregister value
Exceptions
smc::Exceptionon error

Definition at line 268 of file EdgeGrblDeviceBase.cpp.

◆ read() [2/3]

void edge::EdgeGrblDeviceBase::read ( struct edge_reg *  reg,
std::vector< uint32_t > &  values 
)

Get all registers.

Parameters
[in]regregister to read
valuesvalues to fill

the values initial size is the register depth

Definition at line 288 of file EdgeGrblDeviceBase.cpp.

◆ read() [3/3]

void edge::EdgeGrblDeviceBase::read ( struct edge_reg *  reg,
uint32_t &  value 
)
inline

Get a register value.

Parameters
[in]regregister to read
[out]valueregister value
Exceptions
smc::Exceptionon error

Definition at line 76 of file EdgeGrblDeviceBase.hpp.

Here is the call graph for this function:

◆ wait()

bool edge::EdgeGrblDeviceBase::wait ( const std::chrono::milliseconds &  timeout)
overridevirtual

wait for input

Parameters
timeoutwait timeout
Returns
true if data is available
Exceptions
Exception(IO)on IO error

Implements grbl::GrblDeviceBase.

Definition at line 175 of file EdgeGrblDeviceBase.cpp.

◆ waitIrq()

bool edge::EdgeGrblDeviceBase::waitIrq ( const std::chrono::milliseconds &  timeout,
const struct edge_reg *const  expectedReg,
uint32_t  expectedBit 
)
protected

Wait for irq from given source.

Parameters
timeoutTimeout for wait.
expectedRegExpected status register
expectedBitExpected status bit set
Returns
true Required ISR occured
false Timed out

Definition at line 186 of file EdgeGrblDeviceBase.cpp.

◆ write() [1/3]

void edge::EdgeGrblDeviceBase::write ( const std::string &  data)
overridevirtual

raw write some bytes

Parameters
[in]databytes to write

Implements grbl::GrblDeviceBase.

Definition at line 129 of file EdgeGrblDeviceBase.cpp.

Here is the caller graph for this function:

◆ write() [2/3]

void edge::EdgeGrblDeviceBase::write ( struct edge_reg *  reg,
size_t  offset,
uint32_t  value 
)

Write a value to register.

Parameters
[in]regregister to write
[in]offsetoffset in the register (depth)
[in]valuevalue to set
Exceptions
smc::Exceptionon error

Definition at line 308 of file EdgeGrblDeviceBase.cpp.

◆ write() [3/3]

void edge::EdgeGrblDeviceBase::write ( struct edge_reg *  reg,
uint32_t  value 
)
inline

Write a value to register.

Parameters
[in]regregister to write
[in]valuevalue to set
Exceptions
smc::Exceptionon error

Definition at line 107 of file EdgeGrblDeviceBase.hpp.

Here is the call graph for this function:

The documentation for this class was generated from the following files: