Files
SOMEIP/source/soa_server/someip_server_cfg.hpp

175 lines
7.9 KiB
C++

/*============================================================================*/
/* Copyright (C) huaxu (2026).
*
* All rights reserved. This software is huaxu property. Duplication
* or disclosure without huaxu written authorization is prohibited.
*
* @file someip_server_cfg.hpp
* @brief head file of someip ids
* @author LiuZhimin
* @date 2026-02-24 15:20:00
*/
/*============================================================================*/
/*=======[R E V I S I O N H I S T O R Y]====================================*/
/* <VERSION> <DATE> <AUTHOR> <REVISION LOG>
* V0.0.1 20260606 Liuzhimin Initial Version
*/
/*============================================================================*/
#ifndef SOMEIP_SERVER_CFG_HPP
#define SOMEIP_SERVER_CFG_HPP
/*=======[I N C L U D E S]====================================================*/
#include "someip_server.hpp"
/*=======[M A C R O S]========================================================*/
/*--- TOOLS GENERATE BEGIN ---*/
#define VSOMEIP_CONFIGURATION "/etc/vsomeip/tbox_service.json"
#define APP_NAME "my_app"
#define USE_TCP (1u)
#define USE_UDP (2u)
#define USE_PROTOCAL USE_TCP
#define USE_STATIC_ROUTING false
#define OFFER_F_F_METHOD false
#define OFFER_R_R_METHOD true
#define OFFER_SETTER true
#define OFFER_GETTER true
#define OFFER_EVENT true
/* These IDs is just an example, please refer to SomeIp Matrix */
/* ServiceID */
#define S_SYSTEM_SERVER_ID 0x0001
#define S_SYSTEM_INSTANCE_ID 0x0001
#define S_AC_SERVER_ID 0x0002
#define S_AC_INSTANCE_ID 0x0001
#define S_CAN_SERVER_ID 0x0005
#define S_CAN_INSTANCE_ID 0x0001
#define R_SYSTEM_SERVER_ID 0x8001
#define R_SYSTEM_INSTANCE_ID 0x0001
#define R_AC_SERVER_ID 0x8002
#define R_AC_INSTANCE_ID 0x0001
/* MethodID */
#define RR_METHOD_EXAMPLE1 0x0001
#define RR_METHOD_EXAMPLE2 0x0002
#define FF_METHOD_EXAMPLE1 0x1001
#define FF_METHOD_EXAMPLE2 0x1002
#define GETTER_EXAMPLE1 0x2001
#define GETTER_EXAMPLE2 0x2002
#define SETTER_EXAMPLE1 0x3001
#define SETTER_EXAMPLE2 0x3002
#define EVENT_EXAMPLE1 0x4001
#define EVENT_EXAMPLE2 0x4002
#define EVENTGROUP_EXAMPLE1 0x0001
#define NOTIFIER_EXAMPLE1 0x5001
#define NOTIFIER_EXAMPLE2 0x5002
#define EVENTGROUP_EXAMPLE2 0x0002
#define NOTIFIER_CAN0 0x0000
#define NOTIFIER_CAN1 0x0001
#define NOTIFIER_CAN2 0x0002
#define NOTIFIER_CAN3 0x0003
#define NOTIFIER_CAN4 0x0004
#define NOTIFIER_CAN5 0x0005
#define EVENTGROUP_CAN 0x0005
/*=======[P A R A M T Y P E D E F]==========================================*/
/*=======[E X P O R T D A T A]==============================================*/
/*=======[E X P O R T F U N C T I O N D E C L A R A T I O N S]============*/
#if 0
extern std::vector<byte_t> rr_method_example1(void);
extern std::vector<byte_t> rr_method_example2(void);
extern std::vector<byte_t> ff_method_example1(void);
extern std::vector<byte_t> ff_method_example2(void);
extern std::vector<byte_t> getter_example1(void);
extern std::vector<byte_t> getter_example2(void);
extern std::vector<byte_t> setter_example1(void);
extern std::vector<byte_t> setter_example2(void);
extern std::vector<byte_t> event_example1(void);
extern std::vector<byte_t> event_example2(void);
#endif
extern std::vector<byte_t> notifier_can0(void);
extern std::vector<byte_t> notifier_can1(void);
extern std::vector<byte_t> notifier_can2(void);
extern std::vector<byte_t> notifier_can3(void);
extern std::vector<byte_t> notifier_can4(void);
extern std::vector<byte_t> notifier_can5(void);
extern std::vector<byte_t> notifier_example2(void);
extern bool epsilon_func(std::shared_ptr<vsomeip::payload> _old, std::shared_ptr<vsomeip::payload> _new);
// my_servers
inline std::vector<offer_service_t> my_servers = {
{S_CAN_SERVER_ID, S_CAN_INSTANCE_ID, DEFAULT_MAJOR, DEFAULT_MINOR}
//,{S_AC_SERVER_ID, S_AC_INSTANCE_ID, DEFAULT_MAJOR, DEFAULT_MINOR}
};
#if 0
// R/R Methods /* usage eg: receive action */
inline std::vector<offer_method_t> offer_rr_methods = {
{S_SYSTEM_SERVER_ID, S_SYSTEM_INSTANCE_ID, RR_METHOD_EXAMPLE1, message_type_e::MT_REQUEST, &rr_method_example1},
{S_SYSTEM_SERVER_ID, S_SYSTEM_INSTANCE_ID, RR_METHOD_EXAMPLE2, message_type_e::MT_REQUEST, &rr_method_example2}
};
// F/F Methods /* usage eg: receive action without respons */
inline std::vector<offer_method_t> offer_ff_methods = {
{S_SYSTEM_SERVER_ID, S_SYSTEM_INSTANCE_ID, FF_METHOD_EXAMPLE1, message_type_e::MT_REQUEST_NO_RETURN, &ff_method_example1},
{S_SYSTEM_SERVER_ID, S_SYSTEM_INSTANCE_ID, FF_METHOD_EXAMPLE2, message_type_e::MT_REQUEST_NO_RETURN, &ff_method_example2}
};
// Getter /* usage eg: for client get infomation */
inline std::vector<offer_method_t> offer_getters = {
{S_SYSTEM_SERVER_ID, S_SYSTEM_INSTANCE_ID, GETTER_EXAMPLE1, message_type_e::MT_REQUEST, &getter_example1},
{S_SYSTEM_SERVER_ID, S_SYSTEM_INSTANCE_ID, GETTER_EXAMPLE2, message_type_e::MT_REQUEST, &getter_example2}
};
// Setter /* usage eg: for client set infomation */
inline std::vector<offer_method_t> offer_setters = {
{S_SYSTEM_SERVER_ID, S_SYSTEM_INSTANCE_ID, SETTER_EXAMPLE1, message_type_e::MT_REQUEST, &setter_example1},
{S_SYSTEM_SERVER_ID, S_SYSTEM_INSTANCE_ID, SETTER_EXAMPLE2, message_type_e::MT_REQUEST, &setter_example2}
};
// Event /* usage eg: offer event massage */
inline std::vector<offer_event_t> offer_events = {
{S_SYSTEM_SERVER_ID, S_SYSTEM_INSTANCE_ID, EVENTGROUP_EXAMPLE1,
EVENT_EXAMPLE1, event_type_e::ET_EVENT, 0U, false, true, /* active on change */
&epsilon_func, reliability_type_e::RT_UNRELIABLE, &event_example1},
{S_SYSTEM_SERVER_ID, S_SYSTEM_INSTANCE_ID, EVENTGROUP_EXAMPLE1,
EVENT_EXAMPLE2, event_type_e::ET_EVENT, 1000U, false, true, /* cycle */
&epsilon_func, reliability_type_e::RT_UNRELIABLE, &event_example2}
};
#endif
// Notifier /* usage eg: offer event massage (with initial state))*/
inline std::vector<offer_event_t> offer_notifiers = {
{S_CAN_SERVER_ID, S_CAN_INSTANCE_ID, EVENTGROUP_CAN,
NOTIFIER_CAN0, event_type_e::ET_FIELD, 0U, false, true, /* active on change */
&epsilon_func, reliability_type_e::RT_UNRELIABLE, &notifier_can0},
{S_CAN_SERVER_ID, S_CAN_INSTANCE_ID, EVENTGROUP_CAN,
NOTIFIER_CAN1, event_type_e::ET_FIELD, 0U, false, true, /* active on change */
&epsilon_func, reliability_type_e::RT_RELIABLE, &notifier_can1},
{S_CAN_SERVER_ID, S_CAN_INSTANCE_ID, EVENTGROUP_CAN,
NOTIFIER_CAN2, event_type_e::ET_FIELD, 0U, false, true, /* active on change */
&epsilon_func, reliability_type_e::RT_RELIABLE, &notifier_can2},
{S_CAN_SERVER_ID, S_CAN_INSTANCE_ID, EVENTGROUP_CAN,
NOTIFIER_CAN3, event_type_e::ET_FIELD, 0U, false, true, /* active on change */
&epsilon_func, reliability_type_e::RT_RELIABLE, &notifier_can3},
{S_CAN_SERVER_ID, S_CAN_INSTANCE_ID, EVENTGROUP_CAN,
NOTIFIER_CAN4, event_type_e::ET_FIELD, 0U, false, true, /* active on change */
&epsilon_func, reliability_type_e::RT_RELIABLE, &notifier_can4},
{S_CAN_SERVER_ID, S_CAN_INSTANCE_ID, EVENTGROUP_CAN,
NOTIFIER_CAN5, event_type_e::ET_FIELD, 0U, false, true, /* active on change */
&epsilon_func, reliability_type_e::RT_RELIABLE, &notifier_can5}
};
/*--- TOOLS GENERATE END ---*/
#endif // SOMEIP_SERVER_CFG_HPP