ProfinetConnector/profinet_test/sample_app/app_gsdml.h
svad05 c9fe825657 dev(UML-981): Автоматизация сборки
1. Добавил скрипт build.sh - собирает библиотеку pnet и группирует
получившиеся файлы в папку install, туда же помещает библиотеку osal.
Теперь все библиотеки и их заголовки в одном месте, а не распизаны по
папкам в папке build.
2. Добавил проект sample_app в папку profinet_test. Он отвязан от
процесса сборки pnet и использует уже собранную библиотеку из папки
install.
2022-07-12 15:59:03 +02:00

185 lines
5.5 KiB
C

/*********************************************************************
* _ _ _
* _ __ | |_ _ | | __ _ | |__ ___
* | '__|| __|(_)| | / _` || '_ \ / __|
* | | | |_ _ | || (_| || |_) |\__ \
* |_| \__|(_)|_| \__,_||_.__/ |___/
*
* www.rt-labs.com
* Copyright 2018 rt-labs AB, Sweden.
*
* This software is dual-licensed under GPLv3 and a commercial
* license. See the file LICENSE.md distributed with this software for
* full license information.
********************************************************************/
#ifndef APP_GSDML_H
#define APP_GSDML_H
/**
* @file
* @brief Device properties defined by the GSDML device definition
*
* Functions for getting module, submodule and parameter
* configurations using their ids.
*
* Important:
* Any change in this file may require an update of the GSDML file.
* Note that when the GSDML file is updated it has to be reloaded
* in your Profinet engineering tool. PLC applications may be affected.
*
* Design requires unique submodule IDs and unique parameter indexes.
*/
#ifdef __cplusplus
extern "C" {
#endif
#include <pnet_api.h>
#define APP_GSDML_API 0
#define APP_GSDML_DEFAULT_STATION_NAME "rt-labs-dev"
/* GSDML tag: VendorID */
#define APP_GSDML_VENDOR_ID 0x0493
/* GSDML tag: DeviceID */
#define APP_GSDML_DEVICE_ID 0x0002
/* Used in DCP communication */
#define APP_GSDML_OEM_VENDOR_ID 0xcafe
#define APP_GSDML_OEM_DEVICE_ID 0xee02
/* Used in I&M0 */
#define APP_GSDML_IM_HARDWARE_REVISION 3
#define APP_GSDML_IM_VERSION_MAJOR 1
#define APP_GSDML_IM_VERSION_MINOR 2
/* Allowed: 'V', 'R', 'P', 'U', 'T' */
#define APP_GSDML_SW_REV_PREFIX 'V'
#define APP_GSDML_PROFILE_ID 0x1234
#define APP_GSDML_PROFILE_SPEC_TYPE 0x5678
#define APP_GSDML_IM_REVISION_COUNTER 0 /* Typically 0 */
/* Note: You need to read out the actual hardware serial number instead */
#define APP_GSDML_EXAMPLE_SERIAL_NUMBER "007"
/* Initial values. Can be overwritten by PLC */
#define APP_GSDML_TAG_FUNCTION "my function"
#define APP_GSDML_TAG_LOCATION "my location"
#define APP_GSDML_IM_DATE "2022-03-01 10:03"
#define APP_GSDML_DESCRIPTOR "my descriptor"
#define APP_GSDML_SIGNATURE ""
/* GSDML tag: Writeable_IM_Records */
#define APP_GSDML_IM_SUPPORTED \
(PNET_SUPPORTED_IM1 | PNET_SUPPORTED_IM2 | PNET_SUPPORTED_IM3)
/* GSDML tag: OrderNumber */
#define APP_GSDML_ORDER_ID "12345 Abcdefghijk"
/* GSDML tag: ModuleInfo / Name */
#define APP_GSDML_PRODUCT_NAME "P-Net Sample Application"
/* GSDML tag: MinDeviceInterval */
#define APP_GSDML_MIN_DEVICE_INTERVAL 32 /* 1 ms */
#define APP_GSDML_DIAG_CUSTOM_USI 0x1234
/* See "Specification for GSDML" 8.26 LogBookEntryItem for allowed values */
#define APP_GSDML_LOGBOOK_ERROR_CODE 0x20 /* Manufacturer specific */
#define APP_GSDML_LOGBOOK_ERROR_DECODE 0x82 /* Manufacturer specific */
#define APP_GSDML_LOGBOOK_ERROR_CODE_1 PNET_ERROR_CODE_1_FSPM
#define APP_GSDML_LOGBOOK_ERROR_CODE_2 0x00 /* Manufacturer specific */
#define APP_GSDML_LOGBOOK_ENTRY_DETAIL 0xFEE1DEAD /* Manufacturer specific */
#define APP_GSDML_PARAMETER_1_IDX 123
#define APP_GSDML_PARAMETER_2_IDX 124
#define APP_GSDML_PARAMETER_ECHO_IDX 125
/* Use same size for all parameters in example */
#define APP_GSDML_PARAMETER_LENGTH 4
#define APP_GSDML_DEFAULT_MAUTYPE 0x10 /* Copper 100 Mbit/s Full duplex */
typedef struct app_gsdml_module
{
uint32_t id;
/** Module name */
const char * name;
/** Submodule IDs. Variable length, ends with 0. */
uint32_t submodules[];
} app_gsdml_module_t;
typedef struct app_gsdml_submodule
{
uint32_t id;
/** Submodule name */
const char * name;
uint32_t api;
pnet_submodule_dir_t data_dir;
uint16_t insize;
uint16_t outsize;
/** Parameter indexes. See app_gsdml_parameters.
* Variable length, ends with 0. */
uint16_t parameters[];
} app_gsdml_submodule_t;
typedef struct
{
uint32_t index;
const char * name;
uint16_t length;
} app_gsdml_param_t;
#define APP_GSDML_MOD_ID_8_0_DIGITAL_IN 0x00000030
#define APP_GSDML_MOD_ID_0_8_DIGITAL_OUT 0x00000031
#define APP_GSDML_MOD_ID_8_8_DIGITAL_IN_OUT 0x00000032
#define APP_GSDML_MOD_ID_ECHO 0x00000040
#define APP_GSDML_SUBMOD_ID_DIGITAL_IN 0x00000130
#define APP_GSDML_SUBMOD_ID_DIGITAL_OUT 0x00000131
#define APP_GSDML_SUBMOD_ID_DIGITAL_IN_OUT 0x00000132
#define APP_GSDML_SUBMOD_ID_ECHO 0x00000140
#define APP_GSDML_INPUT_DATA_DIGITAL_SIZE 1 /* bytes */
#define APP_GSDML_OUTPUT_DATA_DIGITAL_SIZE 1 /* bytes */
#define APP_GSDML_INPUT_DATA_ECHO_SIZE 8 /* bytes */
#define APP_GSDML_OUTPUT_DATA_ECHO_SIZE APP_GSDML_INPUT_DATA_ECHO_SIZE
#define APP_GSDML_ALARM_PAYLOAD_SIZE 1 /* bytes */
/**
* Get module configuration from module ID
* @param module_id In: Module ID
* @return Module configuration, NULL if not found
*/
const app_gsdml_module_t * app_gsdml_get_module_cfg (uint32_t module_id);
/**
* Get submodule module configuration from submodule ID
* @param submodule_id In: Submodule ID
* @return Submodule configuration, NULL if not found
*/
const app_gsdml_submodule_t * app_gsdml_get_submodule_cfg (
uint32_t submodule_id);
/**
* Get parameter configuration from parameter index
* @param submodule_id In: Submodule ID
* @param index In: Parameters index
* @return Parameter configuration, NULL if not found
*/
const app_gsdml_param_t * app_gsdml_get_parameter_cfg (
uint32_t submodule_id,
uint32_t index);
#ifdef __cplusplus
}
#endif
#endif /* APP_GSDML_H */