控制授权管理

最近更新时间:2024-02-07 10:08:21

我的收藏
说明:
控制授权管理用于分时管理远端设备给现场设备发送消息的权限。当有多个远端设备有权限操控某个现场设备时,可通过控制授权来限制同一时刻只有一个远端设备可以给现场设备发送控制消息,保障操控的安全性。

基本概念

权限类型

1. guest 权限
远端设备作为旁观者,只能观看现场设备音视频内容和收到现场设备的上报数据,无法给现场设备下发控制消息。
2. master 权限
远端设备作为操控者,既可以观看现场设备音视频内容和收到现场设备的上报数据,又可以给现场设备下发控制消息。
注意:
目前现场设备 SDK 限制一个现场设备同时只能给一个远端设备授权为 master 权限。
当现场设备 SDK 给某个远端设备授权为 master 权限时,其他连接的远端设备会自动转为 guest 权限。

基本流程

1. 远端设备向现场设备发送授权请求请求权限, 0 为 guest 权限,1为 master 权限。
2. 现场设备根据回调的远端设备授权请求,对远端设备进行授权处理,并给相关远端设备发送授权通知。
3. 远端设备可根据现场设备的授权通知,判断当前授权状态。




授权模式

远端设备 SDK 和现场设备 SDK 可以分别配置授权模式是否为自动模式。具体配置的 json 字段为 auto_permission字段,设置为1时为自动授权模式,设置为0时是应用授权模式,缺省配置默认为自动授权模式。

自动授权模式

应用可无需关心授权的处理,SDK 会自动按以下默认逻辑进行授权处理:
远端设备设置自动授权模式时,在发起 connect 请求时,会自动给连接的现场设备发送 master 权限授权请求。
现场设备设置自动授权模式时,收到远端设备的授权请求时,会自动按远端设备请求的授权权限对远端设备进行授权处理。

应用授权模式

SDK 提供相关授权接口,应用需要进行接口调用进行授权处理:
远端设备 SDK 不会自动发送 master 权限授权请求,需要应用显式调用权限请求接口,向现场设备请求权限授权。
现场设备 SDK 不会自动处理授权请求,需要应用根据回调的授权请求内容,结合应用定义的授权规则,显式调用授权接口,对远端设备进行授权。

授权接口

远端设备

注册现场设备操控权限变化通知

/*
*   回调注册函数
*   context 上下文指针,回调时会返回注册时传入的该指针,
*   callback 注册的 TRRO_OnOperationPermissionState 回调函数
*/

extern "C" TRRO_EXPORT void TRRO_registerOnOperationPermissionState(void* context, TRRO_OnOperationPermissionState* callback);


/*
* #name :   TRRO_OnOperationPermissionState
* @brief :  回调现场设备操控权限状态通知
* @input :  context             回调上下文指针, 返回注册回调函数时传入的 context
*           field_devid         来源现场设备 ID
*           self_permission     本远端设备当前操控权限,参考 TrroPermission, 0 是 guest,只有观看权限, 1是 master,拥有完全控制权限
*           master_devid        拥有 master 权限的远端设备 ID
* @return : void
*/
typedef void STD_CALL TRRO_OnOperationPermissionState(void* context, const char* field_devid, int self_permission, const char* master_devid);

请求现场设备操控权限操控权限

/*
* @name : TRRO_requestPermission
* @brief : 向网关发出权限请求,网关会反馈TRRO_OnOperationPermissionState 更新权限
* @input : gwid         目标设备 ID
*          permisson    参考结构体 TrroPermission
* @return : 成功1 失败 <= 0
*/
extern "C" TRRO_EXPORT int TRRO_requestPermission(const char* gwid, int permisson);

现场设备

注册远端设备操控权限请求通知回调

使用说明:此接口用于在现场设备接收权限控制请求,可按需选择使用。
/**
* @name  TRRO_registerOperationPermissionRequest
* @brief 注册远端设备操控权限请求通知回调
* @param[in]   context              上下文
* @param[in]   callback             回调函数
* @return 1 for success, other failed
*/
extern "C" TRRO_EXPORT int TRRO_registerOperationPermissionRequest(void *context, TRRO_onOperationPermissionRequest *callback);

参数
含义
context
上下文指针,回调时会返回该指针用于定位
callback
TRRO_onOperationPermissionRequest 回调函数
/**
* @name TRRO_onOperationPermissionRequest
* @brief 远端设备操控权限申请通知
* @param[in]     remote_devid        请求权限的 remote deviceId
* @param[in]     permission          请求的权限,参考TrroPermission,  0: guest 只有观看权限,  1: master 完全控制权限
* @return void
*/
typedef void TRRO_onOperationPermissionRequest(void* context, const char* remote_devid, int permission);
参数
含义
context
上下文指针,回调时会返回该指针用于定位
remote_devid
请求权限的 remote deviceId
permission
请求的权限,参见 TrroPermission:
0:guest 只有观看权限,
1:master 完全控制权限

设置远端设备操作权限

使用说明:此接口用于在改现场设备设置远端设备的操作权限。

/**
 * @name  TRRO_setOperationPermission
 * @brief 设置远端设备操控权限,目前同时只能有一个远端设备有 master 权限,若已有远端设备是 master 权限,调用该接口设置 master权限,会自动取消之前设备的master权限然后设置新设备;
 * @param[in]  remote_devid         设置权限的对端设备 ID
 * @param[in]  permission           参考 TrroPermission, 0 guest,只有观看权、1 master, 完全控制权限
 * @return 1 for success, other failed
 */
extern "C" TRRO_EXPORT int TRRO_setOperationPermission(const char* remote_devid, int permission);

参数
含义
context
上下文指针,回调时会返回该指针用于定位
callback
回调函数