MotionLib  1.0.0
SamBuCa motion library
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Static Protected Attributes | Friends | List of all members
smc::internal::GrblPlatform Class Reference
Inheritance diagram for smc::internal::GrblPlatform:
Inheritance graph
[legend]
Collaboration diagram for smc::internal::GrblPlatform:
Collaboration graph
[legend]

Classes

struct  AxisData
 
struct  Context
 
struct  ImmediateCmd
 
struct  LocalSettingHandler
 
struct  MotionCmd
 

Public Types

typedef std::shared_ptr< GrblPlatformShared
 
typedef std::size_t Line
 
typedef std::map< std::string, LocalSettingHandlerLocalSettingMap
 
typedef std::map< std::string, grbl::GrblParser::SettingDescSettingMap
 
- Public Types inherited from smc::internal::PlatformBase
typedef std::shared_ptr< PlatformBaseShared
 
typedef std::set< DeviceBase::DeviceTypeDeviceTypeList
 
typedef std::list< DeviceBase::Shared > DeviceList
 

Public Member Functions

std::shared_ptr< GrblPlatformshared_from_this ()
 
std::shared_ptr< const GrblPlatformshared_from_this () const
 
DeviceTypeList getSupportedDevices () const override
 
DeviceList generateDevices (const DeviceTypeList &deviceType) override
 
void stop () override
 
void wake () override
 
std::future< void > queue (MotionCmd &&)
 
template<typename T >
std::future< T > run (std::function< void(ImmediateCmd &, Context &)> fun)
 
std::future< void > send (const std::string &cmd, std::function< bool(const std::string &)> msg={}, const std::chrono::milliseconds &timeout=std::chrono::milliseconds{1000})
 send command to grbl More...
 
void updateAxisSetting (const std::string &axis, grbl::SettingId settingId, const std::string &value)
 
units::Value getLastAxisPosition (const std::string &axis) const
 
units::Value getLastAxisResolution (const std::string &axis) const
 
uint8_t getTrigger (const std::string &uid)
 
uint8_t getGpio (const std::string &uid)
 
grbl::Axis getAxis (const std::string &uid)
 
void clearQueues (const std::string &msg, bool clearImmediates=true)
 
- Public Member Functions inherited from smc::internal::PlatformBase
virtual void setNotificationWorker (const NotificationWorker::Shared &worker)
 
void notify (const DeviceId &id)
 
void notify (std::set< DeviceId > &&ids)
 

Static Public Member Functions

static PlatformBase::Shared create (const ccut::yml::NodeRef &config)
 Create new instance of MockPlatform and return shared_ptr owning it.
 

Static Public Attributes

static const std::chrono::milliseconds defaultInterval
 
static const std::string s_loggerCat {"smc:platform:grbl"}
 

Protected Member Functions

 GrblPlatform (const ccut::yml::NodeRef &node)
 
AxisData_getAxisData (const std::string &uid)
 
 GrblPlatform (const std::string &prefix, const std::string &id, std::unique_ptr< grbl::GrblDeviceBase > &&device)
 internal constructor to use this as a sub-platform (MGrblPlatform) More...
 
void processMessage (const std::string &message)
 
bool processMotion ()
 
bool processImmediate ()
 
void onStateMessage ()
 
void loadErrors ()
 
void loadAlarms ()
 
void loadSettingsDesc ()
 
void setup ()
 
void handleAlarm ()
 
void generateGpios (const Context &ctx, const std::list< grbl::GrblParser::PinInfo > &pins, std::list< GrblGpio::Shared > &out)
 
void generateTriggers (Context &ctx, const std::list< grbl::GrblParser::PinInfo > &pins, std::list< GrblTrigger::Shared > &out)
 
void generateAxes (const Context &ctx, size_t axesCount, std::list< GrblAxis::Shared > &out)
 
void thread_func () override
 

Protected Attributes

std::mutex m_lock
 
std::queue< MotionCmdm_queue
 
std::queue< ImmediateCmdm_immediate
 
std::queue< MotionCmdm_pending
 
std::map< std::string, AxisDatam_axisMap
 
std::pair< std::string, uint8_t > m_trigger
 
std::map< std::string, uint8_t > m_gpioMap
 
ccut::Connection m_dataConn
 
std::unique_ptr< Contextm_ctx
 
- Protected Attributes inherited from smc::internal::PlatformBase
std::weak_ptr< NotificationWorkerm_notificationWorker
 

Static Protected Attributes

static constexpr std::size_t maxQueueSize = 1024
 

Friends

class MGrblPlatform
 
class MFEPlatform
 

Detailed Description

Definition at line 62 of file GrblPlatform.hpp.

Constructor & Destructor Documentation

◆ GrblPlatform()

smc::internal::GrblPlatform::GrblPlatform ( const std::string &  prefix,
const std::string &  id,
std::unique_ptr< grbl::GrblDeviceBase > &&  device 
)
explicitprotected

internal constructor to use this as a sub-platform (MGrblPlatform)

this constructor does not start the Thread

Parameters
prefixthe platform uri prefix to use
idthe paltform id to use
devicethe device to communicate with

Definition at line 119 of file GrblPlatform.cpp.

Member Function Documentation

◆ _getAxisData()

GrblPlatform::AxisData & smc::internal::GrblPlatform::_getAxisData ( const std::string &  uid)
protected

lock needs to be held before calling that one

Definition at line 137 of file GrblPlatform.cpp.

◆ send()

std::future< void > smc::internal::GrblPlatform::send ( const std::string &  cmd,
std::function< bool(const std::string &)>  msg = {},
const std::chrono::milliseconds &  timeout = std::chrono::milliseconds{1000} 
)

send command to grbl

mainly for test and debug purpose, see GrblDeviceBase::send

Parameters
cmdthe command to send
msgdata handling function
timeoutreply timeout
Returns
std::future<void>s

Definition at line 221 of file GrblPlatform_Base.cpp.

Here is the call graph for this function:

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