Service Discovery
SomeIpSDSubscribeEventGroup
函数
通过 SomeIpSDDesubscribeEventGroup 函数在节点(消费者)上注销的事件组,可通过本函数重新注册。随后将发送相关的服务发现消息(订阅事件组)。
语法
long SomeIpSDSubscribeEventGroup( dword cevgHandle, LONG tillReboot );
参数
cevgHandle:已消费事件组的句柄(参见SomeIpAddConsumedEventGroup)。tillReboot:1:注册时将 TTL 设置为无限值。事件组注册(订阅事件组)仅执行一次,并保持到通信伙伴(生产者或消费者)重启。0:TTL 设置为预设值(参见SomeIpSetProperty)。事件组注册将多次发送。
返回值
0:函数执行成功。>0:错误代码。
可用性
- 版本:8.1 及以上
- 限制:仅以太网
- 适用场景:------(测量设置)•(仿真/测试设置)
示例
capl
variables
{
DWORD aep; // 应用端点句柄
DWORD csi; // 已消费服务实例句柄
DWORD ceg; // 已消费事件组句柄
DWORD cev; // 已消费事件句柄
}
on start()
{
// 打开应用端点
aep = SomeIpOpenLocalApplicationEndpoint(17, 50002);
// 创建服务实例
csi = SomeIpCreateConsumedServiceInstance(aep, 10, 1);
// 创建事件组
ceg = SomeIpAddConsumedEventGroup(csi, 1);
// 创建事件消费者
cev = SomeIpCreateEventConsumer(csi, 32770, "CallbackEvent1");
}
void CallbackEvent1(DWORD cevHandle, DWORD messageHandle)
{
// 事件发送时调用此函数,可在此处评估参数
}
on key 'd'
{
SomeIpSDDesubscribeEventGroup(ceg);
write("事件组已取消订阅");
}
on key 's'
{
SomeIpSDSubscribeEventgroup(ceg, 1);
write("事件组将重新订阅");
}
SomeIpSDSetServiceStatus
函数
在节点(生产者)上设置提供的服务实例状态。
语法
long SomeIpSDSetServiceStatus( dword psiHandle, long up );
参数
psiHandle:所需提供的服务实例句柄(参见SomeIpCreateProvidedServiceInstance)。up:1:状态改为"启用",开始发送 OfferServices 消息。0:状态改为"禁用",若服务先前处于启用状态,则发送 StopOfferService 消息。
返回值
0:函数执行成功。>0:错误代码。
可用性
- 版本:8.1 及以上
- 限制:仅以太网
- 适用场景:------(测量设置)•(仿真/测试设置)
示例
capl
dword appEndpointHandle;
dword serviceHandle;
appEndpointHandle = SomeIpOpenLocalApplicationEndpoint(kUDP, 30501);
serviceHandle = SomeIpCreateConsumedServiceInstance(appEndpointHandle, 1 /*serviceId*/, 1 /*instanceId*/);
SomeIpSDSetServiceStatus(serviceHandle, 0); // 不提供此服务
SomeIpSDRequireService
函数
通过 SomeIpSDReleaseService 函数在节点(消费者)上注销的服务,可通过本函数重新注册。必要时发送相关的服务发现消息(查找服务)。
语法
long SomeIpSDRequireService( dword csiHandle );
参数
csiHandle:所需已消费服务实例的句柄(参见SomeIpCreateConsumedServiceInstance)。
返回值
0:函数执行成功。>0:错误代码。
可用性
- 版本:8.1 及以上
- 限制:仅以太网
- 适用场景:------(测量设置)•(仿真/测试设置)
示例
capl
variables
{
DWORD aep; // 应用端点句柄
DWORD csi; // 已消费服务实例句柄
DWORD ceg; // 已消费事件组句柄
DWORD cev; // 已消费事件句柄
}
on start()
{
// 打开应用端点
aep = SomeIpOpenLocalApplicationEndpoint(17, 50002);
// 创建服务实例
csi = SomeIpCreateConsumedServiceInstance(aep, 10, 1);
// 创建事件组
ceg = SomeIpAddConsumedEventGroup(csi, 1);
// 创建事件消费者
cev = SomeIpCreateEventConsumer(csi, 32770, "CallbackEvent1");
}
void CallbackEvent1(DWORD cevHandle, DWORD messageHandle)
{
// 事件发送时调用此函数,可在此处评估参数
}
on key 'r'
{
SomeIpSDRequireService(csi);
}
on key 'x'
{
SomeIpSDReleaseService(csi);
}
SomeIpSDReleaseService
函数
在节点(消费者)上注销服务。节点将不再发送相关的服务发现消息(查找服务)。服务实例注销时,其关联的事件组、事件、字段和方法不会被删除。
语法
long SomeIpSDReleaseService( dword csiHandle );
参数
csiHandle:待释放的已消费服务实例句柄(参见SomeIpCreateConsumedServiceInstance)。
返回值
0:函数执行成功。>0:错误代码。
可用性
- 版本:8.1 及以上
- 限制:仅以太网
- 适用场景:------(测量设置)•(仿真/测试设置)
示例
capl
variables
{
DWORD aep; // 应用端点句柄
DWORD csi; // 已消费服务实例句柄
DWORD ceg; // 已消费事件组句柄
DWORD cev; // 已消费事件句柄
}
on start()
{
// 打开应用端点
aep = SomeIpOpenLocalApplicationEndpoint(17, 50002);
// 创建服务实例
csi = SomeIpCreateConsumedServiceInstance(aep, 10, 1);
// 创建事件组
ceg = SomeIpAddConsumedEventGroup(csi, 1);
// 创建事件消费者
cev = SomeIpCreateEventConsumer(csi, 32770, "CallbackEvent1");
}
void CallbackEvent1(DWORD cevHandle, DWORD messageHandle)
{
// 事件发送时调用此函数,可在此处评估参数
}
on key 'r'
{
SomeIpSDRequireService(csi);
}
on key 'x'
{
SomeIpSDReleaseService(csi);
}
SomeIpSDDesubscribeEventGroup
函数
在节点(消费者)上注销事件组。终止现有订阅(发送停止订阅事件组消息),节点将不再发送相关的服务发现消息(订阅事件组)。事件组注销时,其关联的事件、字段和方法不会被删除。
语法
long SomeIpSDDesubscribeEventGroup( dword cevgHandle );
参数
cevgHandle:已消费事件组的句柄(参见SomeIpAddConsumedEventGroup)。
返回值
0:函数执行成功。>0:错误代码。
可用性
- 版本:8.1 及以上
- 限制:仅以太网
- 适用场景:------(测量设置)•(仿真/测试设置)
示例
capl
variables
{
DWORD aep; // 应用端点句柄
DWORD csi; // 已消费服务实例句柄
DWORD ceg; // 已消费事件组句柄
DWORD cev; // 已消费事件句柄
}
on start()
{
// 打开应用端点
aep = SomeIpOpenLocalApplicationEndpoint(17, 50002);
// 创建服务实例
csi = SomeIpCreateConsumedServiceInstance(aep, 10, 1);
// 创建事件组
ceg = SomeIpAddConsumedEventGroup(csi, 1);
// 创建事件消费者
cev = SomeIpCreateEventConsumer(csi, 32770, "CallbackEvent1");
}
void CallbackEvent1(DWORD cevHandle, DWORD messageHandle)
{
// 事件发送时调用此函数,可在此处评估参数
}
on key 'd'
{
SomeIpSDDesubscribeEventGroup(ceg);
write("事件组已取消订阅");
}
on key 's'
{
SomeIpSDSubscribeEventgroup(ceg, 1);
write("事件组将重新订阅");
}