exos_datamodel_set_operational()

<< 点击显示目录 >>

主页  exOS使用助手 > exOS Automation Help > Development > Programming > exOS Communication API reference (exos_api.h) >

exos_datamodel_set_operational()

将数据模型设置为运行状态

调用语法

EXOS_ERROR_CODE exos_datamodel_set_operational(exos_datamodel_handle_t *datamodel);

EXOS_CONECTION_STATE 主题所述,在与远程应用程序交换数据时,每个数据模型及其数据集都可能处于 EXOS_STATE_CONECTED 或 EXOS_STATE_OPERATIONAL状态。 从系统角度看,这两种状态没有区别,这意味着应用程序可以在其中任何一种状态下发布和/或订阅数据集。EXOS_STATE_OPERATIONAL 只是提供一个内置功能,以便从应用程序的角度区分运行状态和预运行状态。如果不需要这种区分,那么应用程序使用 EXOS_STATE_CONNECTED 作为 "活动 "状态就足够了。

要从 EXOS_STATE_CONNECTED 切换到 EXOS_STATE_OPERATIONAL,应用程序的任何一方都应调用 exos_datamodel_set_operational()。如果连接丢失,即应用程序进入 EXOS_STATE_DISCONNECTED,则必须再次调用 exos_datamodel_set_operational(),才能进入运行状态。

如果有其他应用程序连接到已处于 EXOS_STATE_OPERATIONAL 状态的数据模型实例,即 AR 和 Linux 之间的连接已建立,新应用程序将收到两个数据模型事件(datamodelEvents):首先是 EXOS_STATE_CONNECTED,然后是 EXOS_STATE_OPERATIONAL。


Set the datamodel into OPERATIONAL state

Call syntax

EXOS_ERROR_CODE exos_datamodel_set_operational(exos_datamodel_handle_t *datamodel);

As mentioned in the EXOS_CONNECTION_STATE topic, every datamodel along with its datasets can be in state EXOS_STATE_CONNECTED or EXOS_STATE_OPERATIONAL while exchanging data with the remote application. From a system perspective, there is no difference between these two states, meaning an application can publish and/or subscribe datasets in either one of them. The EXOS_STATE_OPERATIONAL is merely to provide a built-in feature to distinguish between an operational and a preoperational state from an application perspective. If there is no need for this distinction, then an application can suffice with using the EXOS_STATE_CONNECTED as "active" state.

In order to switch from EXOS_STATE_CONNECTED to EXOS_STATE_OPERATIONAL, either side of the application should call the exos_datamodel_set_operational(). If the connection is lost, meaning the application goes into EXOS_STATE_DISCONNECTED, the exos_datamodel_set_operational() must be called again to get into operational state.

In case an additional application connects to a datamodel instance that is already EXOS_STATE_OPERATIONAL, meaning there connection between AR and Linux is already up, the new application will receive two datamodelEvents: first an EXOS_STATE_CONNECTED, then an EXOS_STATE_OPERATIONAL.