No version for distro humble showing jazzy. Known supported distros are highlighted in the buttons above.

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

SMACC2 client library for Google Calendar integration via gcalcli

Maintainers

  • Brett Aldrich

Authors

No additional 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

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

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

SMACC2 client library for Google Calendar integration via gcalcli

Maintainers

  • Brett Aldrich

Authors

No additional 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

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_gcalcli at Robotics Stack Exchange

No version for distro kilted showing jazzy. Known supported distros are highlighted in the buttons above.

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

SMACC2 client library for Google Calendar integration via gcalcli

Maintainers

  • Brett Aldrich

Authors

No additional 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

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_gcalcli at Robotics Stack Exchange

No version for distro rolling showing jazzy. Known supported distros are highlighted in the buttons above.

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

SMACC2 client library for Google Calendar integration via gcalcli

Maintainers

  • Brett Aldrich

Authors

No additional 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

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_gcalcli at Robotics Stack Exchange

No version for distro ardent showing jazzy. Known supported distros are highlighted in the buttons above.

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

SMACC2 client library for Google Calendar integration via gcalcli

Maintainers

  • Brett Aldrich

Authors

No additional 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

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_gcalcli at Robotics Stack Exchange

No version for distro bouncy showing jazzy. Known supported distros are highlighted in the buttons above.

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

SMACC2 client library for Google Calendar integration via gcalcli

Maintainers

  • Brett Aldrich

Authors

No additional 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

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_gcalcli at Robotics Stack Exchange

No version for distro crystal showing jazzy. Known supported distros are highlighted in the buttons above.

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

SMACC2 client library for Google Calendar integration via gcalcli

Maintainers

  • Brett Aldrich

Authors

No additional 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

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_gcalcli at Robotics Stack Exchange

No version for distro eloquent showing jazzy. Known supported distros are highlighted in the buttons above.

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

SMACC2 client library for Google Calendar integration via gcalcli

Maintainers

  • Brett Aldrich

Authors

No additional 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

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_gcalcli at Robotics Stack Exchange

No version for distro dashing showing jazzy. Known supported distros are highlighted in the buttons above.

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

SMACC2 client library for Google Calendar integration via gcalcli

Maintainers

  • Brett Aldrich

Authors

No additional 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

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_gcalcli at Robotics Stack Exchange

No version for distro galactic showing jazzy. Known supported distros are highlighted in the buttons above.

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

SMACC2 client library for Google Calendar integration via gcalcli

Maintainers

  • Brett Aldrich

Authors

No additional 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

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_gcalcli at Robotics Stack Exchange

No version for distro foxy showing jazzy. Known supported distros are highlighted in the buttons above.

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

SMACC2 client library for Google Calendar integration via gcalcli

Maintainers

  • Brett Aldrich

Authors

No additional 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

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_gcalcli at Robotics Stack Exchange

No version for distro iron showing jazzy. Known supported distros are highlighted in the buttons above.

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

SMACC2 client library for Google Calendar integration via gcalcli

Maintainers

  • Brett Aldrich

Authors

No additional 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

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_gcalcli at Robotics Stack Exchange

No version for distro lunar showing jazzy. Known supported distros are highlighted in the buttons above.

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

SMACC2 client library for Google Calendar integration via gcalcli

Maintainers

  • Brett Aldrich

Authors

No additional 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

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_gcalcli at Robotics Stack Exchange

No version for distro jade showing jazzy. Known supported distros are highlighted in the buttons above.

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

SMACC2 client library for Google Calendar integration via gcalcli

Maintainers

  • Brett Aldrich

Authors

No additional 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

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_gcalcli at Robotics Stack Exchange

No version for distro indigo showing jazzy. Known supported distros are highlighted in the buttons above.

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

SMACC2 client library for Google Calendar integration via gcalcli

Maintainers

  • Brett Aldrich

Authors

No additional 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

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_gcalcli at Robotics Stack Exchange

No version for distro hydro showing jazzy. Known supported distros are highlighted in the buttons above.

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

SMACC2 client library for Google Calendar integration via gcalcli

Maintainers

  • Brett Aldrich

Authors

No additional 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

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_gcalcli at Robotics Stack Exchange

No version for distro kinetic showing jazzy. Known supported distros are highlighted in the buttons above.

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

SMACC2 client library for Google Calendar integration via gcalcli

Maintainers

  • Brett Aldrich

Authors

No additional 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

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_gcalcli at Robotics Stack Exchange

No version for distro melodic showing jazzy. Known supported distros are highlighted in the buttons above.

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

SMACC2 client library for Google Calendar integration via gcalcli

Maintainers

  • Brett Aldrich

Authors

No additional 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

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_gcalcli at Robotics Stack Exchange

No version for distro noetic showing jazzy. Known supported distros are highlighted in the buttons above.

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

SMACC2 client library for Google Calendar integration via gcalcli

Maintainers

  • Brett Aldrich

Authors

No additional 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

CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cl_gcalcli at Robotics Stack Exchange