TOnMonitoringAccessControlCB

This is a callback function that monitors control authority (access control) changes in the robot controller. It is triggered when a control right event occurs, such as request, permission, or rejection of control ownership.

As this function is executed automatically by the controller, you should avoid writing code that takes longer than 50 msec to execute.

Defined in: DRFL.h

// typedef (DRFL.h)
typedef void (*TOnMonitoringAccessControlCB)(const MONITORING_ACCESS_CONTROL);

// internal definition
DRFL_API void _SetOnMonitoringAccessControl(LPROBOTCONTROL pCtrl, TOnMonitoringAccessControlCB pCallbackFunc);

// user-callable API
void SetOnMonitoringAccessControl(TOnMonitoringAccessControlCB pCallbackFunc)
{
    _SetOnMonitoringAccessControl(_rbtCtrl, pCallbackFunc);
};

Parameter

Parameter Name

Data Type

Default Value

Description

eAccCtrl

MONITORING_ACCESS_CONTROL

Represents the access control event state (e.g., REQUEST, PERMISSION, REJECTION).

Return
None

Example

#include "DRFL.h"
#include <iostream>
using namespace DRAFramework;
using namespace std;

// Callback executed on access control event
void OnMonitoringAccessControlCB(const MONITORING_ACCESS_CONTROL eAccCtrl)
{
    cout << "[ACCESS CONTROL EVENT]" << endl;

    switch (eAccCtrl)
    {
        case MONITORING_ACCESS_CONTROL_REQUEST:
            cout << "Received control transfer request." << endl;

            // Example: reject control transfer request
            drfl.manage_access_control(MANAGE_ACCESS_CONTROL_RESPONSE_NO);
            break;

        case MONITORING_ACCESS_CONTROL_RESPONSE_YES:
            cout << "Control transfer has been permitted." << endl;
            break;

        case MONITORING_ACCESS_CONTROL_RESPONSE_NO:
            cout << "Control transfer has been rejected." << endl;
            break;

        default:
            cout << "Unknown access control state (" << (int)eAccCtrl << ")" << endl;
            break;
    }
}

int main()
{
    CDRFL drfl;

    // Connect to robot controller
    if (!drfl.open_connection("192.168.137.100")) {
        cout << "Failed to connect to controller." << endl;
        return -1;
    }

    // Register callback for access control events
    drfl.SetOnMonitoringAccessControl(OnMonitoringAccessControlCB);

    // Keep monitoring
    while (true)
        std::this_thread::sleep_for(std::chrono::seconds(1));

    drfl.close_connection();
    return 0;
}

Notes

  • This callback is triggered by the robot controller when:
    - Another device or user requests control transfer.
    - The controller grants or denies control authority.

  • The parameter MONITORING_ACCESS_CONTROL indicates the event type.

  • Common use cases:
    - Automatically rejecting external control requests.
    - Logging or alerting operators about control state changes.
    - Handling cooperative robot operation environments.

  • Callback code should execute within 50 ms to prevent blocking the controller.