Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-01-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
cl_gcalcli - SMACC2 Google Calendar Client
A SMACC2 client library for Google Calendar integration via the gcalcli CLI tool. This client enables state machines to react to Google Calendar events.
Prerequisites
- gcalcli installed and authenticated (
pip install gcalcli) - Google Calendar API credentials configured
- ROS2 and SMACC2 installed
Architecture
ClGcalcli (Orchestrator)
├── CpSubprocessExecutor (smacc2 core - generic subprocess execution)
├── CpGcalcliConnection (connection health monitoring)
├── CpCalendarPoller (agenda polling + TSV parsing)
└── CpCalendarEventListener (pattern matching + event dispatch)
Components
| Component | Purpose |
|---|---|
CpSubprocessExecutor |
Generic subprocess execution (smacc2 core) |
CpGcalcliConnection |
Connection health monitoring, heartbeat, authentication |
CpCalendarPoller |
Periodic agenda fetching and parsing |
CpCalendarEventListener |
Event pattern matching and triggering |
Client Behaviors
| Behavior | Type | Purpose |
|---|---|---|
CbDetectCalendarEvent |
Async | Wait until matching event’s start time arrives |
CbStatus |
Sync | Get connection state and current events |
CbWaitConnection |
Async | Wait for gcalcli connection with timeout |
CbMonitorConnection |
Sync | Continuous connection monitoring |
CbQuickAdd |
Async | Add event via gcalcli quick
|
CbRefreshAgenda |
Sync | Force immediate agenda refresh |
CbDetectCalendarEvent Parameters
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 5);
// pattern regex minutes_before
The minutes_before parameter controls when the behavior triggers relative to the event’s start time. The value 5 means “trigger 5 minutes before the event’s start time.”
This is intentional - it allows the robot/system to prepare before a meeting actually starts. You can change it:
-
0= trigger exactly at start time -
5= trigger 5 minutes early -
10= trigger 10 minutes early
If you want to trigger at the actual start time, change it to:
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 0);
Events
// Connection events
EvConnectionLost<TSource, TOrthogonal>
EvConnectionRestored<TSource, TOrthogonal>
EvAuthenticationRequired<TSource, TOrthogonal>
// Calendar events
EvCalendarEventDetected<TSource, TOrthogonal> // Contains: event, matched_pattern
EvCalendarEventStarted<TSource, TOrthogonal> // Contains: event
EvCalendarEventEnded<TSource, TOrthogonal> // Contains: event
EvAgendaUpdated<TSource, TOrthogonal> // Contains: events vector
Usage Example
Orthogonal Setup
#include <cl_gcalcli/cl_gcalcli.hpp>
#include <cl_gcalcli/client_behaviors.hpp>
class OrCalendar : public smacc2::Orthogonal<OrCalendar>
{
void onInitialize() override
{
cl_gcalcli::GcalcliConfig config;
config.gcalcli_path = "gcalcli"; // from PATH
config.poll_interval = std::chrono::seconds{30};
config.heartbeat_interval = std::chrono::seconds{60};
config.agenda_days = 7;
this->createClient<cl_gcalcli::ClGcalcli>(config);
}
};
State Machine Example
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_gcalcli_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_gcalcli at Robotics Stack Exchange
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-01-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
cl_gcalcli - SMACC2 Google Calendar Client
A SMACC2 client library for Google Calendar integration via the gcalcli CLI tool. This client enables state machines to react to Google Calendar events.
Prerequisites
- gcalcli installed and authenticated (
pip install gcalcli) - Google Calendar API credentials configured
- ROS2 and SMACC2 installed
Architecture
ClGcalcli (Orchestrator)
├── CpSubprocessExecutor (smacc2 core - generic subprocess execution)
├── CpGcalcliConnection (connection health monitoring)
├── CpCalendarPoller (agenda polling + TSV parsing)
└── CpCalendarEventListener (pattern matching + event dispatch)
Components
| Component | Purpose |
|---|---|
CpSubprocessExecutor |
Generic subprocess execution (smacc2 core) |
CpGcalcliConnection |
Connection health monitoring, heartbeat, authentication |
CpCalendarPoller |
Periodic agenda fetching and parsing |
CpCalendarEventListener |
Event pattern matching and triggering |
Client Behaviors
| Behavior | Type | Purpose |
|---|---|---|
CbDetectCalendarEvent |
Async | Wait until matching event’s start time arrives |
CbStatus |
Sync | Get connection state and current events |
CbWaitConnection |
Async | Wait for gcalcli connection with timeout |
CbMonitorConnection |
Sync | Continuous connection monitoring |
CbQuickAdd |
Async | Add event via gcalcli quick
|
CbRefreshAgenda |
Sync | Force immediate agenda refresh |
CbDetectCalendarEvent Parameters
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 5);
// pattern regex minutes_before
The minutes_before parameter controls when the behavior triggers relative to the event’s start time. The value 5 means “trigger 5 minutes before the event’s start time.”
This is intentional - it allows the robot/system to prepare before a meeting actually starts. You can change it:
-
0= trigger exactly at start time -
5= trigger 5 minutes early -
10= trigger 10 minutes early
If you want to trigger at the actual start time, change it to:
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 0);
Events
// Connection events
EvConnectionLost<TSource, TOrthogonal>
EvConnectionRestored<TSource, TOrthogonal>
EvAuthenticationRequired<TSource, TOrthogonal>
// Calendar events
EvCalendarEventDetected<TSource, TOrthogonal> // Contains: event, matched_pattern
EvCalendarEventStarted<TSource, TOrthogonal> // Contains: event
EvCalendarEventEnded<TSource, TOrthogonal> // Contains: event
EvAgendaUpdated<TSource, TOrthogonal> // Contains: events vector
Usage Example
Orthogonal Setup
#include <cl_gcalcli/cl_gcalcli.hpp>
#include <cl_gcalcli/client_behaviors.hpp>
class OrCalendar : public smacc2::Orthogonal<OrCalendar>
{
void onInitialize() override
{
cl_gcalcli::GcalcliConfig config;
config.gcalcli_path = "gcalcli"; // from PATH
config.poll_interval = std::chrono::seconds{30};
config.heartbeat_interval = std::chrono::seconds{60};
config.agenda_days = 7;
this->createClient<cl_gcalcli::ClGcalcli>(config);
}
};
State Machine Example
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_gcalcli_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_gcalcli at Robotics Stack Exchange
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-01-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
cl_gcalcli - SMACC2 Google Calendar Client
A SMACC2 client library for Google Calendar integration via the gcalcli CLI tool. This client enables state machines to react to Google Calendar events.
Prerequisites
- gcalcli installed and authenticated (
pip install gcalcli) - Google Calendar API credentials configured
- ROS2 and SMACC2 installed
Architecture
ClGcalcli (Orchestrator)
├── CpSubprocessExecutor (smacc2 core - generic subprocess execution)
├── CpGcalcliConnection (connection health monitoring)
├── CpCalendarPoller (agenda polling + TSV parsing)
└── CpCalendarEventListener (pattern matching + event dispatch)
Components
| Component | Purpose |
|---|---|
CpSubprocessExecutor |
Generic subprocess execution (smacc2 core) |
CpGcalcliConnection |
Connection health monitoring, heartbeat, authentication |
CpCalendarPoller |
Periodic agenda fetching and parsing |
CpCalendarEventListener |
Event pattern matching and triggering |
Client Behaviors
| Behavior | Type | Purpose |
|---|---|---|
CbDetectCalendarEvent |
Async | Wait until matching event’s start time arrives |
CbStatus |
Sync | Get connection state and current events |
CbWaitConnection |
Async | Wait for gcalcli connection with timeout |
CbMonitorConnection |
Sync | Continuous connection monitoring |
CbQuickAdd |
Async | Add event via gcalcli quick
|
CbRefreshAgenda |
Sync | Force immediate agenda refresh |
CbDetectCalendarEvent Parameters
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 5);
// pattern regex minutes_before
The minutes_before parameter controls when the behavior triggers relative to the event’s start time. The value 5 means “trigger 5 minutes before the event’s start time.”
This is intentional - it allows the robot/system to prepare before a meeting actually starts. You can change it:
-
0= trigger exactly at start time -
5= trigger 5 minutes early -
10= trigger 10 minutes early
If you want to trigger at the actual start time, change it to:
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 0);
Events
// Connection events
EvConnectionLost<TSource, TOrthogonal>
EvConnectionRestored<TSource, TOrthogonal>
EvAuthenticationRequired<TSource, TOrthogonal>
// Calendar events
EvCalendarEventDetected<TSource, TOrthogonal> // Contains: event, matched_pattern
EvCalendarEventStarted<TSource, TOrthogonal> // Contains: event
EvCalendarEventEnded<TSource, TOrthogonal> // Contains: event
EvAgendaUpdated<TSource, TOrthogonal> // Contains: events vector
Usage Example
Orthogonal Setup
#include <cl_gcalcli/cl_gcalcli.hpp>
#include <cl_gcalcli/client_behaviors.hpp>
class OrCalendar : public smacc2::Orthogonal<OrCalendar>
{
void onInitialize() override
{
cl_gcalcli::GcalcliConfig config;
config.gcalcli_path = "gcalcli"; // from PATH
config.poll_interval = std::chrono::seconds{30};
config.heartbeat_interval = std::chrono::seconds{60};
config.agenda_days = 7;
this->createClient<cl_gcalcli::ClGcalcli>(config);
}
};
State Machine Example
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_gcalcli_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_gcalcli at Robotics Stack Exchange
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-01-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
cl_gcalcli - SMACC2 Google Calendar Client
A SMACC2 client library for Google Calendar integration via the gcalcli CLI tool. This client enables state machines to react to Google Calendar events.
Prerequisites
- gcalcli installed and authenticated (
pip install gcalcli) - Google Calendar API credentials configured
- ROS2 and SMACC2 installed
Architecture
ClGcalcli (Orchestrator)
├── CpSubprocessExecutor (smacc2 core - generic subprocess execution)
├── CpGcalcliConnection (connection health monitoring)
├── CpCalendarPoller (agenda polling + TSV parsing)
└── CpCalendarEventListener (pattern matching + event dispatch)
Components
| Component | Purpose |
|---|---|
CpSubprocessExecutor |
Generic subprocess execution (smacc2 core) |
CpGcalcliConnection |
Connection health monitoring, heartbeat, authentication |
CpCalendarPoller |
Periodic agenda fetching and parsing |
CpCalendarEventListener |
Event pattern matching and triggering |
Client Behaviors
| Behavior | Type | Purpose |
|---|---|---|
CbDetectCalendarEvent |
Async | Wait until matching event’s start time arrives |
CbStatus |
Sync | Get connection state and current events |
CbWaitConnection |
Async | Wait for gcalcli connection with timeout |
CbMonitorConnection |
Sync | Continuous connection monitoring |
CbQuickAdd |
Async | Add event via gcalcli quick
|
CbRefreshAgenda |
Sync | Force immediate agenda refresh |
CbDetectCalendarEvent Parameters
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 5);
// pattern regex minutes_before
The minutes_before parameter controls when the behavior triggers relative to the event’s start time. The value 5 means “trigger 5 minutes before the event’s start time.”
This is intentional - it allows the robot/system to prepare before a meeting actually starts. You can change it:
-
0= trigger exactly at start time -
5= trigger 5 minutes early -
10= trigger 10 minutes early
If you want to trigger at the actual start time, change it to:
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 0);
Events
// Connection events
EvConnectionLost<TSource, TOrthogonal>
EvConnectionRestored<TSource, TOrthogonal>
EvAuthenticationRequired<TSource, TOrthogonal>
// Calendar events
EvCalendarEventDetected<TSource, TOrthogonal> // Contains: event, matched_pattern
EvCalendarEventStarted<TSource, TOrthogonal> // Contains: event
EvCalendarEventEnded<TSource, TOrthogonal> // Contains: event
EvAgendaUpdated<TSource, TOrthogonal> // Contains: events vector
Usage Example
Orthogonal Setup
#include <cl_gcalcli/cl_gcalcli.hpp>
#include <cl_gcalcli/client_behaviors.hpp>
class OrCalendar : public smacc2::Orthogonal<OrCalendar>
{
void onInitialize() override
{
cl_gcalcli::GcalcliConfig config;
config.gcalcli_path = "gcalcli"; // from PATH
config.poll_interval = std::chrono::seconds{30};
config.heartbeat_interval = std::chrono::seconds{60};
config.agenda_days = 7;
this->createClient<cl_gcalcli::ClGcalcli>(config);
}
};
State Machine Example
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_gcalcli_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_gcalcli at Robotics Stack Exchange
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-01-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
cl_gcalcli - SMACC2 Google Calendar Client
A SMACC2 client library for Google Calendar integration via the gcalcli CLI tool. This client enables state machines to react to Google Calendar events.
Prerequisites
- gcalcli installed and authenticated (
pip install gcalcli) - Google Calendar API credentials configured
- ROS2 and SMACC2 installed
Architecture
ClGcalcli (Orchestrator)
├── CpSubprocessExecutor (smacc2 core - generic subprocess execution)
├── CpGcalcliConnection (connection health monitoring)
├── CpCalendarPoller (agenda polling + TSV parsing)
└── CpCalendarEventListener (pattern matching + event dispatch)
Components
| Component | Purpose |
|---|---|
CpSubprocessExecutor |
Generic subprocess execution (smacc2 core) |
CpGcalcliConnection |
Connection health monitoring, heartbeat, authentication |
CpCalendarPoller |
Periodic agenda fetching and parsing |
CpCalendarEventListener |
Event pattern matching and triggering |
Client Behaviors
| Behavior | Type | Purpose |
|---|---|---|
CbDetectCalendarEvent |
Async | Wait until matching event’s start time arrives |
CbStatus |
Sync | Get connection state and current events |
CbWaitConnection |
Async | Wait for gcalcli connection with timeout |
CbMonitorConnection |
Sync | Continuous connection monitoring |
CbQuickAdd |
Async | Add event via gcalcli quick
|
CbRefreshAgenda |
Sync | Force immediate agenda refresh |
CbDetectCalendarEvent Parameters
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 5);
// pattern regex minutes_before
The minutes_before parameter controls when the behavior triggers relative to the event’s start time. The value 5 means “trigger 5 minutes before the event’s start time.”
This is intentional - it allows the robot/system to prepare before a meeting actually starts. You can change it:
-
0= trigger exactly at start time -
5= trigger 5 minutes early -
10= trigger 10 minutes early
If you want to trigger at the actual start time, change it to:
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 0);
Events
// Connection events
EvConnectionLost<TSource, TOrthogonal>
EvConnectionRestored<TSource, TOrthogonal>
EvAuthenticationRequired<TSource, TOrthogonal>
// Calendar events
EvCalendarEventDetected<TSource, TOrthogonal> // Contains: event, matched_pattern
EvCalendarEventStarted<TSource, TOrthogonal> // Contains: event
EvCalendarEventEnded<TSource, TOrthogonal> // Contains: event
EvAgendaUpdated<TSource, TOrthogonal> // Contains: events vector
Usage Example
Orthogonal Setup
#include <cl_gcalcli/cl_gcalcli.hpp>
#include <cl_gcalcli/client_behaviors.hpp>
class OrCalendar : public smacc2::Orthogonal<OrCalendar>
{
void onInitialize() override
{
cl_gcalcli::GcalcliConfig config;
config.gcalcli_path = "gcalcli"; // from PATH
config.poll_interval = std::chrono::seconds{30};
config.heartbeat_interval = std::chrono::seconds{60};
config.agenda_days = 7;
this->createClient<cl_gcalcli::ClGcalcli>(config);
}
};
State Machine Example
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_gcalcli_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_gcalcli at Robotics Stack Exchange
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-01-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
cl_gcalcli - SMACC2 Google Calendar Client
A SMACC2 client library for Google Calendar integration via the gcalcli CLI tool. This client enables state machines to react to Google Calendar events.
Prerequisites
- gcalcli installed and authenticated (
pip install gcalcli) - Google Calendar API credentials configured
- ROS2 and SMACC2 installed
Architecture
ClGcalcli (Orchestrator)
├── CpSubprocessExecutor (smacc2 core - generic subprocess execution)
├── CpGcalcliConnection (connection health monitoring)
├── CpCalendarPoller (agenda polling + TSV parsing)
└── CpCalendarEventListener (pattern matching + event dispatch)
Components
| Component | Purpose |
|---|---|
CpSubprocessExecutor |
Generic subprocess execution (smacc2 core) |
CpGcalcliConnection |
Connection health monitoring, heartbeat, authentication |
CpCalendarPoller |
Periodic agenda fetching and parsing |
CpCalendarEventListener |
Event pattern matching and triggering |
Client Behaviors
| Behavior | Type | Purpose |
|---|---|---|
CbDetectCalendarEvent |
Async | Wait until matching event’s start time arrives |
CbStatus |
Sync | Get connection state and current events |
CbWaitConnection |
Async | Wait for gcalcli connection with timeout |
CbMonitorConnection |
Sync | Continuous connection monitoring |
CbQuickAdd |
Async | Add event via gcalcli quick
|
CbRefreshAgenda |
Sync | Force immediate agenda refresh |
CbDetectCalendarEvent Parameters
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 5);
// pattern regex minutes_before
The minutes_before parameter controls when the behavior triggers relative to the event’s start time. The value 5 means “trigger 5 minutes before the event’s start time.”
This is intentional - it allows the robot/system to prepare before a meeting actually starts. You can change it:
-
0= trigger exactly at start time -
5= trigger 5 minutes early -
10= trigger 10 minutes early
If you want to trigger at the actual start time, change it to:
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 0);
Events
// Connection events
EvConnectionLost<TSource, TOrthogonal>
EvConnectionRestored<TSource, TOrthogonal>
EvAuthenticationRequired<TSource, TOrthogonal>
// Calendar events
EvCalendarEventDetected<TSource, TOrthogonal> // Contains: event, matched_pattern
EvCalendarEventStarted<TSource, TOrthogonal> // Contains: event
EvCalendarEventEnded<TSource, TOrthogonal> // Contains: event
EvAgendaUpdated<TSource, TOrthogonal> // Contains: events vector
Usage Example
Orthogonal Setup
#include <cl_gcalcli/cl_gcalcli.hpp>
#include <cl_gcalcli/client_behaviors.hpp>
class OrCalendar : public smacc2::Orthogonal<OrCalendar>
{
void onInitialize() override
{
cl_gcalcli::GcalcliConfig config;
config.gcalcli_path = "gcalcli"; // from PATH
config.poll_interval = std::chrono::seconds{30};
config.heartbeat_interval = std::chrono::seconds{60};
config.agenda_days = 7;
this->createClient<cl_gcalcli::ClGcalcli>(config);
}
};
State Machine Example
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_gcalcli_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_gcalcli at Robotics Stack Exchange
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-01-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
cl_gcalcli - SMACC2 Google Calendar Client
A SMACC2 client library for Google Calendar integration via the gcalcli CLI tool. This client enables state machines to react to Google Calendar events.
Prerequisites
- gcalcli installed and authenticated (
pip install gcalcli) - Google Calendar API credentials configured
- ROS2 and SMACC2 installed
Architecture
ClGcalcli (Orchestrator)
├── CpSubprocessExecutor (smacc2 core - generic subprocess execution)
├── CpGcalcliConnection (connection health monitoring)
├── CpCalendarPoller (agenda polling + TSV parsing)
└── CpCalendarEventListener (pattern matching + event dispatch)
Components
| Component | Purpose |
|---|---|
CpSubprocessExecutor |
Generic subprocess execution (smacc2 core) |
CpGcalcliConnection |
Connection health monitoring, heartbeat, authentication |
CpCalendarPoller |
Periodic agenda fetching and parsing |
CpCalendarEventListener |
Event pattern matching and triggering |
Client Behaviors
| Behavior | Type | Purpose |
|---|---|---|
CbDetectCalendarEvent |
Async | Wait until matching event’s start time arrives |
CbStatus |
Sync | Get connection state and current events |
CbWaitConnection |
Async | Wait for gcalcli connection with timeout |
CbMonitorConnection |
Sync | Continuous connection monitoring |
CbQuickAdd |
Async | Add event via gcalcli quick
|
CbRefreshAgenda |
Sync | Force immediate agenda refresh |
CbDetectCalendarEvent Parameters
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 5);
// pattern regex minutes_before
The minutes_before parameter controls when the behavior triggers relative to the event’s start time. The value 5 means “trigger 5 minutes before the event’s start time.”
This is intentional - it allows the robot/system to prepare before a meeting actually starts. You can change it:
-
0= trigger exactly at start time -
5= trigger 5 minutes early -
10= trigger 10 minutes early
If you want to trigger at the actual start time, change it to:
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 0);
Events
// Connection events
EvConnectionLost<TSource, TOrthogonal>
EvConnectionRestored<TSource, TOrthogonal>
EvAuthenticationRequired<TSource, TOrthogonal>
// Calendar events
EvCalendarEventDetected<TSource, TOrthogonal> // Contains: event, matched_pattern
EvCalendarEventStarted<TSource, TOrthogonal> // Contains: event
EvCalendarEventEnded<TSource, TOrthogonal> // Contains: event
EvAgendaUpdated<TSource, TOrthogonal> // Contains: events vector
Usage Example
Orthogonal Setup
#include <cl_gcalcli/cl_gcalcli.hpp>
#include <cl_gcalcli/client_behaviors.hpp>
class OrCalendar : public smacc2::Orthogonal<OrCalendar>
{
void onInitialize() override
{
cl_gcalcli::GcalcliConfig config;
config.gcalcli_path = "gcalcli"; // from PATH
config.poll_interval = std::chrono::seconds{30};
config.heartbeat_interval = std::chrono::seconds{60};
config.agenda_days = 7;
this->createClient<cl_gcalcli::ClGcalcli>(config);
}
};
State Machine Example
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_gcalcli_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_gcalcli at Robotics Stack Exchange
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-01-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
cl_gcalcli - SMACC2 Google Calendar Client
A SMACC2 client library for Google Calendar integration via the gcalcli CLI tool. This client enables state machines to react to Google Calendar events.
Prerequisites
- gcalcli installed and authenticated (
pip install gcalcli) - Google Calendar API credentials configured
- ROS2 and SMACC2 installed
Architecture
ClGcalcli (Orchestrator)
├── CpSubprocessExecutor (smacc2 core - generic subprocess execution)
├── CpGcalcliConnection (connection health monitoring)
├── CpCalendarPoller (agenda polling + TSV parsing)
└── CpCalendarEventListener (pattern matching + event dispatch)
Components
| Component | Purpose |
|---|---|
CpSubprocessExecutor |
Generic subprocess execution (smacc2 core) |
CpGcalcliConnection |
Connection health monitoring, heartbeat, authentication |
CpCalendarPoller |
Periodic agenda fetching and parsing |
CpCalendarEventListener |
Event pattern matching and triggering |
Client Behaviors
| Behavior | Type | Purpose |
|---|---|---|
CbDetectCalendarEvent |
Async | Wait until matching event’s start time arrives |
CbStatus |
Sync | Get connection state and current events |
CbWaitConnection |
Async | Wait for gcalcli connection with timeout |
CbMonitorConnection |
Sync | Continuous connection monitoring |
CbQuickAdd |
Async | Add event via gcalcli quick
|
CbRefreshAgenda |
Sync | Force immediate agenda refresh |
CbDetectCalendarEvent Parameters
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 5);
// pattern regex minutes_before
The minutes_before parameter controls when the behavior triggers relative to the event’s start time. The value 5 means “trigger 5 minutes before the event’s start time.”
This is intentional - it allows the robot/system to prepare before a meeting actually starts. You can change it:
-
0= trigger exactly at start time -
5= trigger 5 minutes early -
10= trigger 10 minutes early
If you want to trigger at the actual start time, change it to:
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 0);
Events
// Connection events
EvConnectionLost<TSource, TOrthogonal>
EvConnectionRestored<TSource, TOrthogonal>
EvAuthenticationRequired<TSource, TOrthogonal>
// Calendar events
EvCalendarEventDetected<TSource, TOrthogonal> // Contains: event, matched_pattern
EvCalendarEventStarted<TSource, TOrthogonal> // Contains: event
EvCalendarEventEnded<TSource, TOrthogonal> // Contains: event
EvAgendaUpdated<TSource, TOrthogonal> // Contains: events vector
Usage Example
Orthogonal Setup
#include <cl_gcalcli/cl_gcalcli.hpp>
#include <cl_gcalcli/client_behaviors.hpp>
class OrCalendar : public smacc2::Orthogonal<OrCalendar>
{
void onInitialize() override
{
cl_gcalcli::GcalcliConfig config;
config.gcalcli_path = "gcalcli"; // from PATH
config.poll_interval = std::chrono::seconds{30};
config.heartbeat_interval = std::chrono::seconds{60};
config.agenda_days = 7;
this->createClient<cl_gcalcli::ClGcalcli>(config);
}
};
State Machine Example
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_gcalcli_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_gcalcli at Robotics Stack Exchange
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-01-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
cl_gcalcli - SMACC2 Google Calendar Client
A SMACC2 client library for Google Calendar integration via the gcalcli CLI tool. This client enables state machines to react to Google Calendar events.
Prerequisites
- gcalcli installed and authenticated (
pip install gcalcli) - Google Calendar API credentials configured
- ROS2 and SMACC2 installed
Architecture
ClGcalcli (Orchestrator)
├── CpSubprocessExecutor (smacc2 core - generic subprocess execution)
├── CpGcalcliConnection (connection health monitoring)
├── CpCalendarPoller (agenda polling + TSV parsing)
└── CpCalendarEventListener (pattern matching + event dispatch)
Components
| Component | Purpose |
|---|---|
CpSubprocessExecutor |
Generic subprocess execution (smacc2 core) |
CpGcalcliConnection |
Connection health monitoring, heartbeat, authentication |
CpCalendarPoller |
Periodic agenda fetching and parsing |
CpCalendarEventListener |
Event pattern matching and triggering |
Client Behaviors
| Behavior | Type | Purpose |
|---|---|---|
CbDetectCalendarEvent |
Async | Wait until matching event’s start time arrives |
CbStatus |
Sync | Get connection state and current events |
CbWaitConnection |
Async | Wait for gcalcli connection with timeout |
CbMonitorConnection |
Sync | Continuous connection monitoring |
CbQuickAdd |
Async | Add event via gcalcli quick
|
CbRefreshAgenda |
Sync | Force immediate agenda refresh |
CbDetectCalendarEvent Parameters
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 5);
// pattern regex minutes_before
The minutes_before parameter controls when the behavior triggers relative to the event’s start time. The value 5 means “trigger 5 minutes before the event’s start time.”
This is intentional - it allows the robot/system to prepare before a meeting actually starts. You can change it:
-
0= trigger exactly at start time -
5= trigger 5 minutes early -
10= trigger 10 minutes early
If you want to trigger at the actual start time, change it to:
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 0);
Events
// Connection events
EvConnectionLost<TSource, TOrthogonal>
EvConnectionRestored<TSource, TOrthogonal>
EvAuthenticationRequired<TSource, TOrthogonal>
// Calendar events
EvCalendarEventDetected<TSource, TOrthogonal> // Contains: event, matched_pattern
EvCalendarEventStarted<TSource, TOrthogonal> // Contains: event
EvCalendarEventEnded<TSource, TOrthogonal> // Contains: event
EvAgendaUpdated<TSource, TOrthogonal> // Contains: events vector
Usage Example
Orthogonal Setup
#include <cl_gcalcli/cl_gcalcli.hpp>
#include <cl_gcalcli/client_behaviors.hpp>
class OrCalendar : public smacc2::Orthogonal<OrCalendar>
{
void onInitialize() override
{
cl_gcalcli::GcalcliConfig config;
config.gcalcli_path = "gcalcli"; // from PATH
config.poll_interval = std::chrono::seconds{30};
config.heartbeat_interval = std::chrono::seconds{60};
config.agenda_days = 7;
this->createClient<cl_gcalcli::ClGcalcli>(config);
}
};
State Machine Example
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_gcalcli_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_gcalcli at Robotics Stack Exchange
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-01-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
cl_gcalcli - SMACC2 Google Calendar Client
A SMACC2 client library for Google Calendar integration via the gcalcli CLI tool. This client enables state machines to react to Google Calendar events.
Prerequisites
- gcalcli installed and authenticated (
pip install gcalcli) - Google Calendar API credentials configured
- ROS2 and SMACC2 installed
Architecture
ClGcalcli (Orchestrator)
├── CpSubprocessExecutor (smacc2 core - generic subprocess execution)
├── CpGcalcliConnection (connection health monitoring)
├── CpCalendarPoller (agenda polling + TSV parsing)
└── CpCalendarEventListener (pattern matching + event dispatch)
Components
| Component | Purpose |
|---|---|
CpSubprocessExecutor |
Generic subprocess execution (smacc2 core) |
CpGcalcliConnection |
Connection health monitoring, heartbeat, authentication |
CpCalendarPoller |
Periodic agenda fetching and parsing |
CpCalendarEventListener |
Event pattern matching and triggering |
Client Behaviors
| Behavior | Type | Purpose |
|---|---|---|
CbDetectCalendarEvent |
Async | Wait until matching event’s start time arrives |
CbStatus |
Sync | Get connection state and current events |
CbWaitConnection |
Async | Wait for gcalcli connection with timeout |
CbMonitorConnection |
Sync | Continuous connection monitoring |
CbQuickAdd |
Async | Add event via gcalcli quick
|
CbRefreshAgenda |
Sync | Force immediate agenda refresh |
CbDetectCalendarEvent Parameters
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 5);
// pattern regex minutes_before
The minutes_before parameter controls when the behavior triggers relative to the event’s start time. The value 5 means “trigger 5 minutes before the event’s start time.”
This is intentional - it allows the robot/system to prepare before a meeting actually starts. You can change it:
-
0= trigger exactly at start time -
5= trigger 5 minutes early -
10= trigger 10 minutes early
If you want to trigger at the actual start time, change it to:
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 0);
Events
// Connection events
EvConnectionLost<TSource, TOrthogonal>
EvConnectionRestored<TSource, TOrthogonal>
EvAuthenticationRequired<TSource, TOrthogonal>
// Calendar events
EvCalendarEventDetected<TSource, TOrthogonal> // Contains: event, matched_pattern
EvCalendarEventStarted<TSource, TOrthogonal> // Contains: event
EvCalendarEventEnded<TSource, TOrthogonal> // Contains: event
EvAgendaUpdated<TSource, TOrthogonal> // Contains: events vector
Usage Example
Orthogonal Setup
#include <cl_gcalcli/cl_gcalcli.hpp>
#include <cl_gcalcli/client_behaviors.hpp>
class OrCalendar : public smacc2::Orthogonal<OrCalendar>
{
void onInitialize() override
{
cl_gcalcli::GcalcliConfig config;
config.gcalcli_path = "gcalcli"; // from PATH
config.poll_interval = std::chrono::seconds{30};
config.heartbeat_interval = std::chrono::seconds{60};
config.agenda_days = 7;
this->createClient<cl_gcalcli::ClGcalcli>(config);
}
};
State Machine Example
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_gcalcli_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_gcalcli at Robotics Stack Exchange
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-01-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
cl_gcalcli - SMACC2 Google Calendar Client
A SMACC2 client library for Google Calendar integration via the gcalcli CLI tool. This client enables state machines to react to Google Calendar events.
Prerequisites
- gcalcli installed and authenticated (
pip install gcalcli) - Google Calendar API credentials configured
- ROS2 and SMACC2 installed
Architecture
ClGcalcli (Orchestrator)
├── CpSubprocessExecutor (smacc2 core - generic subprocess execution)
├── CpGcalcliConnection (connection health monitoring)
├── CpCalendarPoller (agenda polling + TSV parsing)
└── CpCalendarEventListener (pattern matching + event dispatch)
Components
| Component | Purpose |
|---|---|
CpSubprocessExecutor |
Generic subprocess execution (smacc2 core) |
CpGcalcliConnection |
Connection health monitoring, heartbeat, authentication |
CpCalendarPoller |
Periodic agenda fetching and parsing |
CpCalendarEventListener |
Event pattern matching and triggering |
Client Behaviors
| Behavior | Type | Purpose |
|---|---|---|
CbDetectCalendarEvent |
Async | Wait until matching event’s start time arrives |
CbStatus |
Sync | Get connection state and current events |
CbWaitConnection |
Async | Wait for gcalcli connection with timeout |
CbMonitorConnection |
Sync | Continuous connection monitoring |
CbQuickAdd |
Async | Add event via gcalcli quick
|
CbRefreshAgenda |
Sync | Force immediate agenda refresh |
CbDetectCalendarEvent Parameters
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 5);
// pattern regex minutes_before
The minutes_before parameter controls when the behavior triggers relative to the event’s start time. The value 5 means “trigger 5 minutes before the event’s start time.”
This is intentional - it allows the robot/system to prepare before a meeting actually starts. You can change it:
-
0= trigger exactly at start time -
5= trigger 5 minutes early -
10= trigger 10 minutes early
If you want to trigger at the actual start time, change it to:
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 0);
Events
// Connection events
EvConnectionLost<TSource, TOrthogonal>
EvConnectionRestored<TSource, TOrthogonal>
EvAuthenticationRequired<TSource, TOrthogonal>
// Calendar events
EvCalendarEventDetected<TSource, TOrthogonal> // Contains: event, matched_pattern
EvCalendarEventStarted<TSource, TOrthogonal> // Contains: event
EvCalendarEventEnded<TSource, TOrthogonal> // Contains: event
EvAgendaUpdated<TSource, TOrthogonal> // Contains: events vector
Usage Example
Orthogonal Setup
#include <cl_gcalcli/cl_gcalcli.hpp>
#include <cl_gcalcli/client_behaviors.hpp>
class OrCalendar : public smacc2::Orthogonal<OrCalendar>
{
void onInitialize() override
{
cl_gcalcli::GcalcliConfig config;
config.gcalcli_path = "gcalcli"; // from PATH
config.poll_interval = std::chrono::seconds{30};
config.heartbeat_interval = std::chrono::seconds{60};
config.agenda_days = 7;
this->createClient<cl_gcalcli::ClGcalcli>(config);
}
};
State Machine Example
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_gcalcli_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_gcalcli at Robotics Stack Exchange
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-01-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
cl_gcalcli - SMACC2 Google Calendar Client
A SMACC2 client library for Google Calendar integration via the gcalcli CLI tool. This client enables state machines to react to Google Calendar events.
Prerequisites
- gcalcli installed and authenticated (
pip install gcalcli) - Google Calendar API credentials configured
- ROS2 and SMACC2 installed
Architecture
ClGcalcli (Orchestrator)
├── CpSubprocessExecutor (smacc2 core - generic subprocess execution)
├── CpGcalcliConnection (connection health monitoring)
├── CpCalendarPoller (agenda polling + TSV parsing)
└── CpCalendarEventListener (pattern matching + event dispatch)
Components
| Component | Purpose |
|---|---|
CpSubprocessExecutor |
Generic subprocess execution (smacc2 core) |
CpGcalcliConnection |
Connection health monitoring, heartbeat, authentication |
CpCalendarPoller |
Periodic agenda fetching and parsing |
CpCalendarEventListener |
Event pattern matching and triggering |
Client Behaviors
| Behavior | Type | Purpose |
|---|---|---|
CbDetectCalendarEvent |
Async | Wait until matching event’s start time arrives |
CbStatus |
Sync | Get connection state and current events |
CbWaitConnection |
Async | Wait for gcalcli connection with timeout |
CbMonitorConnection |
Sync | Continuous connection monitoring |
CbQuickAdd |
Async | Add event via gcalcli quick
|
CbRefreshAgenda |
Sync | Force immediate agenda refresh |
CbDetectCalendarEvent Parameters
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 5);
// pattern regex minutes_before
The minutes_before parameter controls when the behavior triggers relative to the event’s start time. The value 5 means “trigger 5 minutes before the event’s start time.”
This is intentional - it allows the robot/system to prepare before a meeting actually starts. You can change it:
-
0= trigger exactly at start time -
5= trigger 5 minutes early -
10= trigger 10 minutes early
If you want to trigger at the actual start time, change it to:
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 0);
Events
// Connection events
EvConnectionLost<TSource, TOrthogonal>
EvConnectionRestored<TSource, TOrthogonal>
EvAuthenticationRequired<TSource, TOrthogonal>
// Calendar events
EvCalendarEventDetected<TSource, TOrthogonal> // Contains: event, matched_pattern
EvCalendarEventStarted<TSource, TOrthogonal> // Contains: event
EvCalendarEventEnded<TSource, TOrthogonal> // Contains: event
EvAgendaUpdated<TSource, TOrthogonal> // Contains: events vector
Usage Example
Orthogonal Setup
#include <cl_gcalcli/cl_gcalcli.hpp>
#include <cl_gcalcli/client_behaviors.hpp>
class OrCalendar : public smacc2::Orthogonal<OrCalendar>
{
void onInitialize() override
{
cl_gcalcli::GcalcliConfig config;
config.gcalcli_path = "gcalcli"; // from PATH
config.poll_interval = std::chrono::seconds{30};
config.heartbeat_interval = std::chrono::seconds{60};
config.agenda_days = 7;
this->createClient<cl_gcalcli::ClGcalcli>(config);
}
};
State Machine Example
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_gcalcli_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_gcalcli at Robotics Stack Exchange
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-01-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
cl_gcalcli - SMACC2 Google Calendar Client
A SMACC2 client library for Google Calendar integration via the gcalcli CLI tool. This client enables state machines to react to Google Calendar events.
Prerequisites
- gcalcli installed and authenticated (
pip install gcalcli) - Google Calendar API credentials configured
- ROS2 and SMACC2 installed
Architecture
ClGcalcli (Orchestrator)
├── CpSubprocessExecutor (smacc2 core - generic subprocess execution)
├── CpGcalcliConnection (connection health monitoring)
├── CpCalendarPoller (agenda polling + TSV parsing)
└── CpCalendarEventListener (pattern matching + event dispatch)
Components
| Component | Purpose |
|---|---|
CpSubprocessExecutor |
Generic subprocess execution (smacc2 core) |
CpGcalcliConnection |
Connection health monitoring, heartbeat, authentication |
CpCalendarPoller |
Periodic agenda fetching and parsing |
CpCalendarEventListener |
Event pattern matching and triggering |
Client Behaviors
| Behavior | Type | Purpose |
|---|---|---|
CbDetectCalendarEvent |
Async | Wait until matching event’s start time arrives |
CbStatus |
Sync | Get connection state and current events |
CbWaitConnection |
Async | Wait for gcalcli connection with timeout |
CbMonitorConnection |
Sync | Continuous connection monitoring |
CbQuickAdd |
Async | Add event via gcalcli quick
|
CbRefreshAgenda |
Sync | Force immediate agenda refresh |
CbDetectCalendarEvent Parameters
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 5);
// pattern regex minutes_before
The minutes_before parameter controls when the behavior triggers relative to the event’s start time. The value 5 means “trigger 5 minutes before the event’s start time.”
This is intentional - it allows the robot/system to prepare before a meeting actually starts. You can change it:
-
0= trigger exactly at start time -
5= trigger 5 minutes early -
10= trigger 10 minutes early
If you want to trigger at the actual start time, change it to:
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 0);
Events
// Connection events
EvConnectionLost<TSource, TOrthogonal>
EvConnectionRestored<TSource, TOrthogonal>
EvAuthenticationRequired<TSource, TOrthogonal>
// Calendar events
EvCalendarEventDetected<TSource, TOrthogonal> // Contains: event, matched_pattern
EvCalendarEventStarted<TSource, TOrthogonal> // Contains: event
EvCalendarEventEnded<TSource, TOrthogonal> // Contains: event
EvAgendaUpdated<TSource, TOrthogonal> // Contains: events vector
Usage Example
Orthogonal Setup
#include <cl_gcalcli/cl_gcalcli.hpp>
#include <cl_gcalcli/client_behaviors.hpp>
class OrCalendar : public smacc2::Orthogonal<OrCalendar>
{
void onInitialize() override
{
cl_gcalcli::GcalcliConfig config;
config.gcalcli_path = "gcalcli"; // from PATH
config.poll_interval = std::chrono::seconds{30};
config.heartbeat_interval = std::chrono::seconds{60};
config.agenda_days = 7;
this->createClient<cl_gcalcli::ClGcalcli>(config);
}
};
State Machine Example
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_gcalcli_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_gcalcli at Robotics Stack Exchange
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-01-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
cl_gcalcli - SMACC2 Google Calendar Client
A SMACC2 client library for Google Calendar integration via the gcalcli CLI tool. This client enables state machines to react to Google Calendar events.
Prerequisites
- gcalcli installed and authenticated (
pip install gcalcli) - Google Calendar API credentials configured
- ROS2 and SMACC2 installed
Architecture
ClGcalcli (Orchestrator)
├── CpSubprocessExecutor (smacc2 core - generic subprocess execution)
├── CpGcalcliConnection (connection health monitoring)
├── CpCalendarPoller (agenda polling + TSV parsing)
└── CpCalendarEventListener (pattern matching + event dispatch)
Components
| Component | Purpose |
|---|---|
CpSubprocessExecutor |
Generic subprocess execution (smacc2 core) |
CpGcalcliConnection |
Connection health monitoring, heartbeat, authentication |
CpCalendarPoller |
Periodic agenda fetching and parsing |
CpCalendarEventListener |
Event pattern matching and triggering |
Client Behaviors
| Behavior | Type | Purpose |
|---|---|---|
CbDetectCalendarEvent |
Async | Wait until matching event’s start time arrives |
CbStatus |
Sync | Get connection state and current events |
CbWaitConnection |
Async | Wait for gcalcli connection with timeout |
CbMonitorConnection |
Sync | Continuous connection monitoring |
CbQuickAdd |
Async | Add event via gcalcli quick
|
CbRefreshAgenda |
Sync | Force immediate agenda refresh |
CbDetectCalendarEvent Parameters
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 5);
// pattern regex minutes_before
The minutes_before parameter controls when the behavior triggers relative to the event’s start time. The value 5 means “trigger 5 minutes before the event’s start time.”
This is intentional - it allows the robot/system to prepare before a meeting actually starts. You can change it:
-
0= trigger exactly at start time -
5= trigger 5 minutes early -
10= trigger 10 minutes early
If you want to trigger at the actual start time, change it to:
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 0);
Events
// Connection events
EvConnectionLost<TSource, TOrthogonal>
EvConnectionRestored<TSource, TOrthogonal>
EvAuthenticationRequired<TSource, TOrthogonal>
// Calendar events
EvCalendarEventDetected<TSource, TOrthogonal> // Contains: event, matched_pattern
EvCalendarEventStarted<TSource, TOrthogonal> // Contains: event
EvCalendarEventEnded<TSource, TOrthogonal> // Contains: event
EvAgendaUpdated<TSource, TOrthogonal> // Contains: events vector
Usage Example
Orthogonal Setup
#include <cl_gcalcli/cl_gcalcli.hpp>
#include <cl_gcalcli/client_behaviors.hpp>
class OrCalendar : public smacc2::Orthogonal<OrCalendar>
{
void onInitialize() override
{
cl_gcalcli::GcalcliConfig config;
config.gcalcli_path = "gcalcli"; // from PATH
config.poll_interval = std::chrono::seconds{30};
config.heartbeat_interval = std::chrono::seconds{60};
config.agenda_days = 7;
this->createClient<cl_gcalcli::ClGcalcli>(config);
}
};
State Machine Example
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_gcalcli_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_gcalcli at Robotics Stack Exchange
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-01-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
cl_gcalcli - SMACC2 Google Calendar Client
A SMACC2 client library for Google Calendar integration via the gcalcli CLI tool. This client enables state machines to react to Google Calendar events.
Prerequisites
- gcalcli installed and authenticated (
pip install gcalcli) - Google Calendar API credentials configured
- ROS2 and SMACC2 installed
Architecture
ClGcalcli (Orchestrator)
├── CpSubprocessExecutor (smacc2 core - generic subprocess execution)
├── CpGcalcliConnection (connection health monitoring)
├── CpCalendarPoller (agenda polling + TSV parsing)
└── CpCalendarEventListener (pattern matching + event dispatch)
Components
| Component | Purpose |
|---|---|
CpSubprocessExecutor |
Generic subprocess execution (smacc2 core) |
CpGcalcliConnection |
Connection health monitoring, heartbeat, authentication |
CpCalendarPoller |
Periodic agenda fetching and parsing |
CpCalendarEventListener |
Event pattern matching and triggering |
Client Behaviors
| Behavior | Type | Purpose |
|---|---|---|
CbDetectCalendarEvent |
Async | Wait until matching event’s start time arrives |
CbStatus |
Sync | Get connection state and current events |
CbWaitConnection |
Async | Wait for gcalcli connection with timeout |
CbMonitorConnection |
Sync | Continuous connection monitoring |
CbQuickAdd |
Async | Add event via gcalcli quick
|
CbRefreshAgenda |
Sync | Force immediate agenda refresh |
CbDetectCalendarEvent Parameters
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 5);
// pattern regex minutes_before
The minutes_before parameter controls when the behavior triggers relative to the event’s start time. The value 5 means “trigger 5 minutes before the event’s start time.”
This is intentional - it allows the robot/system to prepare before a meeting actually starts. You can change it:
-
0= trigger exactly at start time -
5= trigger 5 minutes early -
10= trigger 10 minutes early
If you want to trigger at the actual start time, change it to:
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 0);
Events
// Connection events
EvConnectionLost<TSource, TOrthogonal>
EvConnectionRestored<TSource, TOrthogonal>
EvAuthenticationRequired<TSource, TOrthogonal>
// Calendar events
EvCalendarEventDetected<TSource, TOrthogonal> // Contains: event, matched_pattern
EvCalendarEventStarted<TSource, TOrthogonal> // Contains: event
EvCalendarEventEnded<TSource, TOrthogonal> // Contains: event
EvAgendaUpdated<TSource, TOrthogonal> // Contains: events vector
Usage Example
Orthogonal Setup
#include <cl_gcalcli/cl_gcalcli.hpp>
#include <cl_gcalcli/client_behaviors.hpp>
class OrCalendar : public smacc2::Orthogonal<OrCalendar>
{
void onInitialize() override
{
cl_gcalcli::GcalcliConfig config;
config.gcalcli_path = "gcalcli"; // from PATH
config.poll_interval = std::chrono::seconds{30};
config.heartbeat_interval = std::chrono::seconds{60};
config.agenda_days = 7;
this->createClient<cl_gcalcli::ClGcalcli>(config);
}
};
State Machine Example
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_gcalcli_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_gcalcli at Robotics Stack Exchange
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-01-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
cl_gcalcli - SMACC2 Google Calendar Client
A SMACC2 client library for Google Calendar integration via the gcalcli CLI tool. This client enables state machines to react to Google Calendar events.
Prerequisites
- gcalcli installed and authenticated (
pip install gcalcli) - Google Calendar API credentials configured
- ROS2 and SMACC2 installed
Architecture
ClGcalcli (Orchestrator)
├── CpSubprocessExecutor (smacc2 core - generic subprocess execution)
├── CpGcalcliConnection (connection health monitoring)
├── CpCalendarPoller (agenda polling + TSV parsing)
└── CpCalendarEventListener (pattern matching + event dispatch)
Components
| Component | Purpose |
|---|---|
CpSubprocessExecutor |
Generic subprocess execution (smacc2 core) |
CpGcalcliConnection |
Connection health monitoring, heartbeat, authentication |
CpCalendarPoller |
Periodic agenda fetching and parsing |
CpCalendarEventListener |
Event pattern matching and triggering |
Client Behaviors
| Behavior | Type | Purpose |
|---|---|---|
CbDetectCalendarEvent |
Async | Wait until matching event’s start time arrives |
CbStatus |
Sync | Get connection state and current events |
CbWaitConnection |
Async | Wait for gcalcli connection with timeout |
CbMonitorConnection |
Sync | Continuous connection monitoring |
CbQuickAdd |
Async | Add event via gcalcli quick
|
CbRefreshAgenda |
Sync | Force immediate agenda refresh |
CbDetectCalendarEvent Parameters
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 5);
// pattern regex minutes_before
The minutes_before parameter controls when the behavior triggers relative to the event’s start time. The value 5 means “trigger 5 minutes before the event’s start time.”
This is intentional - it allows the robot/system to prepare before a meeting actually starts. You can change it:
-
0= trigger exactly at start time -
5= trigger 5 minutes early -
10= trigger 10 minutes early
If you want to trigger at the actual start time, change it to:
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 0);
Events
// Connection events
EvConnectionLost<TSource, TOrthogonal>
EvConnectionRestored<TSource, TOrthogonal>
EvAuthenticationRequired<TSource, TOrthogonal>
// Calendar events
EvCalendarEventDetected<TSource, TOrthogonal> // Contains: event, matched_pattern
EvCalendarEventStarted<TSource, TOrthogonal> // Contains: event
EvCalendarEventEnded<TSource, TOrthogonal> // Contains: event
EvAgendaUpdated<TSource, TOrthogonal> // Contains: events vector
Usage Example
Orthogonal Setup
#include <cl_gcalcli/cl_gcalcli.hpp>
#include <cl_gcalcli/client_behaviors.hpp>
class OrCalendar : public smacc2::Orthogonal<OrCalendar>
{
void onInitialize() override
{
cl_gcalcli::GcalcliConfig config;
config.gcalcli_path = "gcalcli"; // from PATH
config.poll_interval = std::chrono::seconds{30};
config.heartbeat_interval = std::chrono::seconds{60};
config.agenda_days = 7;
this->createClient<cl_gcalcli::ClGcalcli>(config);
}
};
State Machine Example
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_gcalcli_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_gcalcli at Robotics Stack Exchange
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-01-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
cl_gcalcli - SMACC2 Google Calendar Client
A SMACC2 client library for Google Calendar integration via the gcalcli CLI tool. This client enables state machines to react to Google Calendar events.
Prerequisites
- gcalcli installed and authenticated (
pip install gcalcli) - Google Calendar API credentials configured
- ROS2 and SMACC2 installed
Architecture
ClGcalcli (Orchestrator)
├── CpSubprocessExecutor (smacc2 core - generic subprocess execution)
├── CpGcalcliConnection (connection health monitoring)
├── CpCalendarPoller (agenda polling + TSV parsing)
└── CpCalendarEventListener (pattern matching + event dispatch)
Components
| Component | Purpose |
|---|---|
CpSubprocessExecutor |
Generic subprocess execution (smacc2 core) |
CpGcalcliConnection |
Connection health monitoring, heartbeat, authentication |
CpCalendarPoller |
Periodic agenda fetching and parsing |
CpCalendarEventListener |
Event pattern matching and triggering |
Client Behaviors
| Behavior | Type | Purpose |
|---|---|---|
CbDetectCalendarEvent |
Async | Wait until matching event’s start time arrives |
CbStatus |
Sync | Get connection state and current events |
CbWaitConnection |
Async | Wait for gcalcli connection with timeout |
CbMonitorConnection |
Sync | Continuous connection monitoring |
CbQuickAdd |
Async | Add event via gcalcli quick
|
CbRefreshAgenda |
Sync | Force immediate agenda refresh |
CbDetectCalendarEvent Parameters
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 5);
// pattern regex minutes_before
The minutes_before parameter controls when the behavior triggers relative to the event’s start time. The value 5 means “trigger 5 minutes before the event’s start time.”
This is intentional - it allows the robot/system to prepare before a meeting actually starts. You can change it:
-
0= trigger exactly at start time -
5= trigger 5 minutes early -
10= trigger 10 minutes early
If you want to trigger at the actual start time, change it to:
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 0);
Events
// Connection events
EvConnectionLost<TSource, TOrthogonal>
EvConnectionRestored<TSource, TOrthogonal>
EvAuthenticationRequired<TSource, TOrthogonal>
// Calendar events
EvCalendarEventDetected<TSource, TOrthogonal> // Contains: event, matched_pattern
EvCalendarEventStarted<TSource, TOrthogonal> // Contains: event
EvCalendarEventEnded<TSource, TOrthogonal> // Contains: event
EvAgendaUpdated<TSource, TOrthogonal> // Contains: events vector
Usage Example
Orthogonal Setup
#include <cl_gcalcli/cl_gcalcli.hpp>
#include <cl_gcalcli/client_behaviors.hpp>
class OrCalendar : public smacc2::Orthogonal<OrCalendar>
{
void onInitialize() override
{
cl_gcalcli::GcalcliConfig config;
config.gcalcli_path = "gcalcli"; // from PATH
config.poll_interval = std::chrono::seconds{30};
config.heartbeat_interval = std::chrono::seconds{60};
config.agenda_days = 7;
this->createClient<cl_gcalcli::ClGcalcli>(config);
}
};
State Machine Example
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_gcalcli_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_gcalcli at Robotics Stack Exchange
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-01-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
cl_gcalcli - SMACC2 Google Calendar Client
A SMACC2 client library for Google Calendar integration via the gcalcli CLI tool. This client enables state machines to react to Google Calendar events.
Prerequisites
- gcalcli installed and authenticated (
pip install gcalcli) - Google Calendar API credentials configured
- ROS2 and SMACC2 installed
Architecture
ClGcalcli (Orchestrator)
├── CpSubprocessExecutor (smacc2 core - generic subprocess execution)
├── CpGcalcliConnection (connection health monitoring)
├── CpCalendarPoller (agenda polling + TSV parsing)
└── CpCalendarEventListener (pattern matching + event dispatch)
Components
| Component | Purpose |
|---|---|
CpSubprocessExecutor |
Generic subprocess execution (smacc2 core) |
CpGcalcliConnection |
Connection health monitoring, heartbeat, authentication |
CpCalendarPoller |
Periodic agenda fetching and parsing |
CpCalendarEventListener |
Event pattern matching and triggering |
Client Behaviors
| Behavior | Type | Purpose |
|---|---|---|
CbDetectCalendarEvent |
Async | Wait until matching event’s start time arrives |
CbStatus |
Sync | Get connection state and current events |
CbWaitConnection |
Async | Wait for gcalcli connection with timeout |
CbMonitorConnection |
Sync | Continuous connection monitoring |
CbQuickAdd |
Async | Add event via gcalcli quick
|
CbRefreshAgenda |
Sync | Force immediate agenda refresh |
CbDetectCalendarEvent Parameters
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 5);
// pattern regex minutes_before
The minutes_before parameter controls when the behavior triggers relative to the event’s start time. The value 5 means “trigger 5 minutes before the event’s start time.”
This is intentional - it allows the robot/system to prepare before a meeting actually starts. You can change it:
-
0= trigger exactly at start time -
5= trigger 5 minutes early -
10= trigger 10 minutes early
If you want to trigger at the actual start time, change it to:
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 0);
Events
// Connection events
EvConnectionLost<TSource, TOrthogonal>
EvConnectionRestored<TSource, TOrthogonal>
EvAuthenticationRequired<TSource, TOrthogonal>
// Calendar events
EvCalendarEventDetected<TSource, TOrthogonal> // Contains: event, matched_pattern
EvCalendarEventStarted<TSource, TOrthogonal> // Contains: event
EvCalendarEventEnded<TSource, TOrthogonal> // Contains: event
EvAgendaUpdated<TSource, TOrthogonal> // Contains: events vector
Usage Example
Orthogonal Setup
#include <cl_gcalcli/cl_gcalcli.hpp>
#include <cl_gcalcli/client_behaviors.hpp>
class OrCalendar : public smacc2::Orthogonal<OrCalendar>
{
void onInitialize() override
{
cl_gcalcli::GcalcliConfig config;
config.gcalcli_path = "gcalcli"; // from PATH
config.poll_interval = std::chrono::seconds{30};
config.heartbeat_interval = std::chrono::seconds{60};
config.agenda_days = 7;
this->createClient<cl_gcalcli::ClGcalcli>(config);
}
};
State Machine Example
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_gcalcli_test_1 |
Launch files
Messages
Services
Plugins
Recent questions tagged cl_gcalcli at Robotics Stack Exchange
Package Summary
| Version | 1.0.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/robosoft-ai/SMACC2.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-01-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Brett Aldrich
Authors
cl_gcalcli - SMACC2 Google Calendar Client
A SMACC2 client library for Google Calendar integration via the gcalcli CLI tool. This client enables state machines to react to Google Calendar events.
Prerequisites
- gcalcli installed and authenticated (
pip install gcalcli) - Google Calendar API credentials configured
- ROS2 and SMACC2 installed
Architecture
ClGcalcli (Orchestrator)
├── CpSubprocessExecutor (smacc2 core - generic subprocess execution)
├── CpGcalcliConnection (connection health monitoring)
├── CpCalendarPoller (agenda polling + TSV parsing)
└── CpCalendarEventListener (pattern matching + event dispatch)
Components
| Component | Purpose |
|---|---|
CpSubprocessExecutor |
Generic subprocess execution (smacc2 core) |
CpGcalcliConnection |
Connection health monitoring, heartbeat, authentication |
CpCalendarPoller |
Periodic agenda fetching and parsing |
CpCalendarEventListener |
Event pattern matching and triggering |
Client Behaviors
| Behavior | Type | Purpose |
|---|---|---|
CbDetectCalendarEvent |
Async | Wait until matching event’s start time arrives |
CbStatus |
Sync | Get connection state and current events |
CbWaitConnection |
Async | Wait for gcalcli connection with timeout |
CbMonitorConnection |
Sync | Continuous connection monitoring |
CbQuickAdd |
Async | Add event via gcalcli quick
|
CbRefreshAgenda |
Sync | Force immediate agenda refresh |
CbDetectCalendarEvent Parameters
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 5);
// pattern regex minutes_before
The minutes_before parameter controls when the behavior triggers relative to the event’s start time. The value 5 means “trigger 5 minutes before the event’s start time.”
This is intentional - it allows the robot/system to prepare before a meeting actually starts. You can change it:
-
0= trigger exactly at start time -
5= trigger 5 minutes early -
10= trigger 10 minutes early
If you want to trigger at the actual start time, change it to:
configure_orthogonal<OrCalendar, CbDetectCalendarEvent>("TestEvent", false, 0);
Events
// Connection events
EvConnectionLost<TSource, TOrthogonal>
EvConnectionRestored<TSource, TOrthogonal>
EvAuthenticationRequired<TSource, TOrthogonal>
// Calendar events
EvCalendarEventDetected<TSource, TOrthogonal> // Contains: event, matched_pattern
EvCalendarEventStarted<TSource, TOrthogonal> // Contains: event
EvCalendarEventEnded<TSource, TOrthogonal> // Contains: event
EvAgendaUpdated<TSource, TOrthogonal> // Contains: events vector
Usage Example
Orthogonal Setup
#include <cl_gcalcli/cl_gcalcli.hpp>
#include <cl_gcalcli/client_behaviors.hpp>
class OrCalendar : public smacc2::Orthogonal<OrCalendar>
{
void onInitialize() override
{
cl_gcalcli::GcalcliConfig config;
config.gcalcli_path = "gcalcli"; // from PATH
config.poll_interval = std::chrono::seconds{30};
config.heartbeat_interval = std::chrono::seconds{60};
config.agenda_days = 7;
this->createClient<cl_gcalcli::ClGcalcli>(config);
}
};
State Machine Example
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| smacc2 |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| sm_cl_gcalcli_test_1 |