| /**************************************************************************** |
| * apps/examples/lely_master/sdev_master.c |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. The |
| * ASF licenses this file to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance with the |
| * License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| * License for the specific language governing permissions and limitations |
| * under the License. |
| * |
| ****************************************************************************/ |
| |
| /**************************************************************************** |
| * Included Files |
| ****************************************************************************/ |
| |
| #include <nuttx/config.h> |
| |
| #include "sdev.h" |
| |
| /**************************************************************************** |
| * Pre-processor Definitions |
| ****************************************************************************/ |
| |
| #define CO_SDEV_STRING(s) s |
| |
| /**************************************************************************** |
| * Private Data |
| ****************************************************************************/ |
| |
| /* Object 0x1000 sub-objects */ |
| |
| static const struct co_ssub g_1000_sub[] = |
| { |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Device type"), |
| #endif |
| .subidx = 0x00, |
| .type = CO_DEFTYPE_UNSIGNED32, |
| #if !LELY_NO_CO_OBJ_LIMITS |
| .min.u32 = CO_UNSIGNED32_MIN, |
| .max.u32 = CO_UNSIGNED32_MAX, |
| #endif |
| #if !LELY_NO_CO_OBJ_DEFAULT |
| .def.u32 = CO_UNSIGNED32_MIN, |
| #endif |
| .val.u32 = CO_UNSIGNED32_MIN, |
| .access = CO_ACCESS_RO, |
| .pdo_mapping = 0, |
| .flags = 0 |
| } |
| }; |
| |
| /* Object 0x1001 sub-objects */ |
| |
| static const struct co_ssub g_1001_sub[] = |
| { |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Error register"), |
| #endif |
| .subidx = 0x00, |
| .type = CO_DEFTYPE_UNSIGNED8, |
| #if !LELY_NO_CO_OBJ_LIMITS |
| .min.u8 = CO_UNSIGNED8_MIN, |
| .max.u8 = CO_UNSIGNED8_MAX, |
| #endif |
| #if !LELY_NO_CO_OBJ_DEFAULT |
| .def.u8 = CO_UNSIGNED8_MIN, |
| #endif |
| .val.u8 = CO_UNSIGNED8_MIN, |
| .access = CO_ACCESS_RO, |
| .pdo_mapping = 0, |
| .flags = 0 |
| } |
| }; |
| |
| /* Object 0x1005 sub-objects */ |
| |
| static const struct co_ssub g_1005_sub[] = |
| { |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("COB-ID SYNC message"), |
| #endif |
| .subidx = 0x00, |
| .type = CO_DEFTYPE_UNSIGNED32, |
| #if !LELY_NO_CO_OBJ_LIMITS |
| .min.u32 = CO_UNSIGNED32_MIN, |
| .max.u32 = CO_UNSIGNED32_MAX, |
| #endif |
| #if !LELY_NO_CO_OBJ_DEFAULT |
| .def.u32 = 0x40000080lu, |
| #endif |
| .val.u32 = 0x40000080lu, |
| .access = CO_ACCESS_RW, |
| .pdo_mapping = 0, |
| .flags = 0 |
| } |
| }; |
| |
| /* Object 0x1006 sub-objects */ |
| |
| static const struct co_ssub g_1006_sub[] = |
| { |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Communication cycle period"), |
| #endif |
| .subidx = 0x00, |
| .type = CO_DEFTYPE_UNSIGNED32, |
| #if !LELY_NO_CO_OBJ_LIMITS |
| .min.u32 = CO_UNSIGNED32_MIN, |
| .max.u32 = CO_UNSIGNED32_MAX, |
| #endif |
| #if !LELY_NO_CO_OBJ_DEFAULT |
| .def.u32 = 0x000186a0lu, |
| #endif |
| .val.u32 = 0x000186a0lu, |
| .access = CO_ACCESS_RW, |
| .pdo_mapping = 0, |
| .flags = 0 |
| } |
| }; |
| |
| /* Object 0x1012 sub-objects */ |
| |
| static const struct co_ssub g_1012_sub[] = |
| { |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("COB-ID time stamp object"), |
| #endif |
| .subidx = 0x00, |
| .type = CO_DEFTYPE_UNSIGNED32, |
| #if !LELY_NO_CO_OBJ_LIMITS |
| .min.u32 = CO_UNSIGNED32_MIN, |
| .max.u32 = CO_UNSIGNED32_MAX, |
| #endif |
| #if !LELY_NO_CO_OBJ_DEFAULT |
| .def.u32 = 0x80000100lu, |
| #endif |
| .val.u32 = 0x80000100lu, |
| .access = CO_ACCESS_RW, |
| .pdo_mapping = 0, |
| .flags = 0 |
| } |
| }; |
| |
| /* Object 0x1017 sub-objects */ |
| |
| static const struct co_ssub g_1017_sub[] = |
| { |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Producer heartbeat time"), |
| #endif |
| .subidx = 0x00, |
| .type = CO_DEFTYPE_UNSIGNED16, |
| #if !LELY_NO_CO_OBJ_LIMITS |
| .min.u16 = CO_UNSIGNED16_MIN, |
| .max.u16 = CO_UNSIGNED16_MAX, |
| #endif |
| #if !LELY_NO_CO_OBJ_DEFAULT |
| .def.u16 = 0x0032, |
| #endif |
| .val.u16 = 0x0032, |
| .access = CO_ACCESS_RW, |
| .pdo_mapping = 0, |
| .flags = 0 |
| } |
| }; |
| |
| /* Object 0x1018 sub-objects */ |
| |
| static const struct co_ssub g_1018_sub[] = |
| { |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Highest sub-index supported"), |
| #endif |
| .subidx = 0x00, |
| .type = CO_DEFTYPE_UNSIGNED8, |
| #if !LELY_NO_CO_OBJ_LIMITS |
| .min.u8 = CO_UNSIGNED8_MIN, |
| .max.u8 = CO_UNSIGNED8_MAX, |
| #endif |
| #if !LELY_NO_CO_OBJ_DEFAULT |
| .def.u8 = 0x04, |
| #endif |
| .val.u8 = 0x04, |
| .access = CO_ACCESS_CONST, |
| .pdo_mapping = 0, |
| .flags = 0 |
| }, |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Vendor-ID"), |
| #endif |
| .subidx = 0x01, |
| .type = CO_DEFTYPE_UNSIGNED32, |
| #if !LELY_NO_CO_OBJ_LIMITS |
| .min.u32 = CO_UNSIGNED32_MIN, |
| .max.u32 = CO_UNSIGNED32_MAX, |
| #endif |
| #if !LELY_NO_CO_OBJ_DEFAULT |
| .def.u32 = 0x00000360lu, |
| #endif |
| .val.u32 = 0x00000360lu, |
| .access = CO_ACCESS_RO, |
| .pdo_mapping = 0, |
| .flags = 0 |
| }, |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Product code"), |
| #endif |
| .subidx = 0x02, |
| .type = CO_DEFTYPE_UNSIGNED32, |
| #if !LELY_NO_CO_OBJ_LIMITS |
| .min.u32 = CO_UNSIGNED32_MIN, |
| .max.u32 = CO_UNSIGNED32_MAX, |
| #endif |
| #if !LELY_NO_CO_OBJ_DEFAULT |
| .def.u32 = CO_UNSIGNED32_MIN, |
| #endif |
| .val.u32 = CO_UNSIGNED32_MIN, |
| .access = CO_ACCESS_RO, |
| .pdo_mapping = 0, |
| .flags = 0 |
| }, |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Revision number"), |
| #endif |
| .subidx = 0x03, |
| .type = CO_DEFTYPE_UNSIGNED32, |
| #if !LELY_NO_CO_OBJ_LIMITS |
| .min.u32 = CO_UNSIGNED32_MIN, |
| .max.u32 = CO_UNSIGNED32_MAX, |
| #endif |
| #if !LELY_NO_CO_OBJ_DEFAULT |
| .def.u32 = CO_UNSIGNED32_MIN, |
| #endif |
| .val.u32 = CO_UNSIGNED32_MIN, |
| .access = CO_ACCESS_RO, |
| .pdo_mapping = 0, |
| .flags = 0 |
| }, |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Serial number"), |
| #endif |
| .subidx = 0x04, |
| .type = CO_DEFTYPE_UNSIGNED32, |
| #if !LELY_NO_CO_OBJ_LIMITS |
| .min.u32 = CO_UNSIGNED32_MIN, |
| .max.u32 = CO_UNSIGNED32_MAX, |
| #endif |
| #if !LELY_NO_CO_OBJ_DEFAULT |
| .def.u32 = CO_UNSIGNED32_MIN, |
| #endif |
| .val.u32 = CO_UNSIGNED32_MIN, |
| .access = CO_ACCESS_RO, |
| .pdo_mapping = 0, |
| .flags = 0 |
| } |
| }; |
| |
| /* Object 0x1280 sub-objects */ |
| |
| static const struct co_ssub g_1280_sub[] = |
| { |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Highest sub-index supported"), |
| #endif |
| .subidx = 0x00, |
| .type = CO_DEFTYPE_UNSIGNED8, |
| #if !LELY_NO_CO_OBJ_LIMITS |
| .min.u8 = CO_UNSIGNED8_MIN, |
| .max.u8 = CO_UNSIGNED8_MAX, |
| #endif |
| #if !LELY_NO_CO_OBJ_DEFAULT |
| .def.u8 = 0x03, |
| #endif |
| .val.u8 = 0x03, |
| .access = CO_ACCESS_CONST, |
| .pdo_mapping = 0, |
| .flags = 0 |
| }, |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("COB-ID client to server"), |
| #endif |
| .subidx = 0x01, |
| .type = CO_DEFTYPE_UNSIGNED32, |
| #if !LELY_NO_CO_OBJ_LIMITS |
| .min.u32 = CO_UNSIGNED32_MIN, |
| .max.u32 = CO_UNSIGNED32_MAX, |
| #endif |
| #if !LELY_NO_CO_OBJ_DEFAULT |
| .def.u32 = 0x00000602lu, |
| #endif |
| .val.u32 = 0x00000602lu, |
| .access = CO_ACCESS_RW, |
| .pdo_mapping = 0, |
| .flags = 0 |
| }, |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("COB-ID server to client"), |
| #endif |
| .subidx = 0x02, |
| .type = CO_DEFTYPE_UNSIGNED32, |
| #if !LELY_NO_CO_OBJ_LIMITS |
| .min.u32 = CO_UNSIGNED32_MIN, |
| .max.u32 = CO_UNSIGNED32_MAX, |
| #endif |
| #if !LELY_NO_CO_OBJ_DEFAULT |
| .def.u32 = 0x00000582lu, |
| #endif |
| .val.u32 = 0x00000582lu, |
| .access = CO_ACCESS_RW, |
| .pdo_mapping = 0, |
| .flags = 0 |
| }, |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Node-ID of the SDO server"), |
| #endif |
| .subidx = 0x03, |
| .type = CO_DEFTYPE_UNSIGNED8, |
| #if !LELY_NO_CO_OBJ_LIMITS |
| .min.u8 = CO_UNSIGNED8_MIN, |
| .max.u8 = CO_UNSIGNED8_MAX, |
| #endif |
| #if !LELY_NO_CO_OBJ_DEFAULT |
| .def.u8 = 0x02, |
| #endif |
| .val.u8 = 0x02, |
| .access = CO_ACCESS_RW, |
| .pdo_mapping = 0, |
| .flags = 0 |
| } |
| }; |
| |
| /* Object 0x1400 sub-objects */ |
| |
| static const struct co_ssub g_1400_sub[] = |
| { |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Highest sub-index supported"), |
| #endif |
| .subidx = 0x00, |
| .type = CO_DEFTYPE_UNSIGNED8, |
| #if !LELY_NO_CO_OBJ_LIMITS |
| .min.u8 = CO_UNSIGNED8_MIN, |
| .max.u8 = CO_UNSIGNED8_MAX, |
| #endif |
| #if !LELY_NO_CO_OBJ_DEFAULT |
| .def.u8 = 0x02, |
| #endif |
| .val.u8 = 0x02, |
| .access = CO_ACCESS_CONST, |
| .pdo_mapping = 0, |
| .flags = 0 |
| }, |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("COB-ID"), |
| #endif |
| .subidx = 0x01, |
| .type = CO_DEFTYPE_UNSIGNED32, |
| #if !LELY_NO_CO_OBJ_LIMITS |
| .min.u32 = CO_UNSIGNED32_MIN, |
| .max.u32 = CO_UNSIGNED32_MAX, |
| #endif |
| #if !LELY_NO_CO_OBJ_DEFAULT |
| .def.u32 = 0x00000182lu, |
| #endif |
| .val.u32 = 0x00000182lu, |
| .access = CO_ACCESS_RW, |
| .pdo_mapping = 0, |
| .flags = 0 |
| }, |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Transmission type"), |
| #endif |
| .subidx = 0x02, |
| .type = CO_DEFTYPE_UNSIGNED8, |
| #if !LELY_NO_CO_OBJ_LIMITS |
| .min.u8 = CO_UNSIGNED8_MIN, |
| .max.u8 = CO_UNSIGNED8_MAX, |
| #endif |
| #if !LELY_NO_CO_OBJ_DEFAULT |
| .def.u8 = 0x01, |
| #endif |
| .val.u8 = 0x01, |
| .access = CO_ACCESS_RW, |
| .pdo_mapping = 0, |
| .flags = 0 |
| } |
| }; |
| |
| /* Object 0x1600 sub-objects */ |
| |
| static const struct co_ssub g_1600_sub[] = |
| { |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Number of mapped objects"), |
| #endif |
| .subidx = 0x00, |
| .type = CO_DEFTYPE_UNSIGNED8, |
| #if !LELY_NO_CO_OBJ_LIMITS |
| .min.u8 = CO_UNSIGNED8_MIN, |
| .max.u8 = CO_UNSIGNED8_MAX, |
| #endif |
| #if !LELY_NO_CO_OBJ_DEFAULT |
| .def.u8 = 0x01, |
| #endif |
| .val.u8 = 0x01, |
| .access = CO_ACCESS_RW, |
| .pdo_mapping = 0, |
| .flags = 0 |
| }, |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Mapping 1"), |
| #endif |
| .subidx = 0x01, |
| .type = CO_DEFTYPE_UNSIGNED32, |
| #if !LELY_NO_CO_OBJ_LIMITS |
| .min.u32 = CO_UNSIGNED32_MIN, |
| .max.u32 = CO_UNSIGNED32_MAX, |
| #endif |
| #if !LELY_NO_CO_OBJ_DEFAULT |
| .def.u32 = 0x21000020lu, |
| #endif |
| .val.u32 = 0x21000020lu, |
| .access = CO_ACCESS_RW, |
| .pdo_mapping = 0, |
| .flags = 0 |
| } |
| }; |
| |
| /* Object 0x1f80 sub-objects */ |
| |
| static const struct co_ssub g_1f80_sub[] = |
| { |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("NMT startup"), |
| #endif |
| .subidx = 0x00, |
| .type = CO_DEFTYPE_UNSIGNED32, |
| #if !LELY_NO_CO_OBJ_LIMITS |
| .min.u32 = CO_UNSIGNED32_MIN, |
| .max.u32 = CO_UNSIGNED32_MAX, |
| #endif |
| #if !LELY_NO_CO_OBJ_DEFAULT |
| .def.u32 = CO_UNSIGNED32_MIN, |
| #endif |
| .val.u32 = 0x00000000lu, |
| .access = CO_ACCESS_RW, |
| .pdo_mapping = 0, |
| .flags = 0 |
| | CO_OBJ_FLAGS_PARAMETER_VALUE |
| } |
| }; |
| |
| /* Object 0x2000 sub-objects */ |
| |
| static const struct co_ssub g_2000_sub[] = |
| { |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Object with custom SDO download callback"), |
| #endif |
| .subidx = 0x00, |
| .type = CO_DEFTYPE_UNSIGNED32, |
| #if !LELY_NO_CO_OBJ_LIMITS |
| .min.u32 = CO_UNSIGNED32_MIN, |
| .max.u32 = CO_UNSIGNED32_MAX, |
| #endif |
| #if !LELY_NO_CO_OBJ_DEFAULT |
| .def.u32 = CO_UNSIGNED32_MIN, |
| #endif |
| .val.u32 = CO_UNSIGNED32_MIN, |
| .access = CO_ACCESS_RW, |
| .pdo_mapping = 0, |
| .flags = 0 |
| } |
| }; |
| |
| /* Object 0x2001 sub-objects */ |
| |
| static const struct co_ssub g_2001_sub[] = |
| { |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Object with custom SDO upload callback"), |
| #endif |
| .subidx = 0x00, |
| .type = CO_DEFTYPE_UNSIGNED32, |
| #if !LELY_NO_CO_OBJ_LIMITS |
| .min.u32 = CO_UNSIGNED32_MIN, |
| .max.u32 = CO_UNSIGNED32_MAX, |
| #endif |
| #if !LELY_NO_CO_OBJ_DEFAULT |
| .def.u32 = CO_UNSIGNED32_MIN, |
| #endif |
| .val.u32 = CO_UNSIGNED32_MIN, |
| .access = CO_ACCESS_RO, |
| .pdo_mapping = 0, |
| .flags = 0 |
| } |
| }; |
| |
| /* Object 0x2100 sub-objects */ |
| |
| static const struct co_ssub g_2100_sub[] = |
| { |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Counter"), |
| #endif |
| .subidx = 0x00, |
| .type = CO_DEFTYPE_UNSIGNED32, |
| #if !LELY_NO_CO_OBJ_LIMITS |
| .min.u32 = CO_UNSIGNED32_MIN, |
| .max.u32 = CO_UNSIGNED32_MAX, |
| #endif |
| #if !LELY_NO_CO_OBJ_DEFAULT |
| .def.u32 = CO_UNSIGNED32_MIN, |
| #endif |
| .val.u32 = CO_UNSIGNED32_MIN, |
| .access = CO_ACCESS_RW, |
| .pdo_mapping = 1, |
| .flags = 0 |
| } |
| }; |
| |
| /* Object dictionary */ |
| |
| static const struct co_sobj g_g_sdev_master_objs[] = |
| { |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Device type"), |
| #endif |
| .idx = 0x1000, |
| .code = CO_OBJECT_VAR, |
| .nsub = 1, |
| .subs = g_1000_sub |
| }, |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Error register"), |
| #endif |
| .idx = 0x1001, |
| .code = CO_OBJECT_VAR, |
| .nsub = 1, |
| .subs = g_1001_sub |
| }, |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("COB-ID SYNC message"), |
| #endif |
| .idx = 0x1005, |
| .code = CO_OBJECT_VAR, |
| .nsub = 1, |
| .subs = g_1005_sub |
| }, |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Communication cycle period"), |
| #endif |
| .idx = 0x1006, |
| .code = CO_OBJECT_VAR, |
| .nsub = 1, |
| .subs = g_1006_sub |
| }, |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("COB-ID time stamp object"), |
| #endif |
| .idx = 0x1012, |
| .code = CO_OBJECT_VAR, |
| .nsub = 1, |
| .subs = g_1012_sub |
| }, |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Producer heartbeat time"), |
| #endif |
| .idx = 0x1017, |
| .code = CO_OBJECT_VAR, |
| .nsub = 1, |
| .subs = g_1017_sub |
| }, |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Identity object"), |
| #endif |
| .idx = 0x1018, |
| .code = CO_OBJECT_RECORD, |
| .nsub = 5, |
| .subs = g_1018_sub |
| }, |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("SDO client parameter"), |
| #endif |
| .idx = 0x1280, |
| .code = CO_OBJECT_RECORD, |
| .nsub = 4, |
| .subs = g_1280_sub |
| }, |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("RPDO communication parameter"), |
| #endif |
| .idx = 0x1400, |
| .code = CO_OBJECT_RECORD, |
| .nsub = 3, |
| .subs = g_1400_sub |
| }, |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("RPDO mapping parameter"), |
| #endif |
| .idx = 0x1600, |
| .code = CO_OBJECT_RECORD, |
| .nsub = 2, |
| .subs = g_1600_sub |
| }, |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("NMT startup"), |
| #endif |
| .idx = 0x1f80, |
| .code = CO_OBJECT_VAR, |
| .nsub = 1, |
| .subs = g_1f80_sub |
| }, |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Object with custom SDO download callback"), |
| #endif |
| .idx = 0x2000, |
| .code = CO_OBJECT_VAR, |
| .nsub = 1, |
| .subs = g_2000_sub |
| }, |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Object with custom SDO upload callback"), |
| #endif |
| .idx = 0x2001, |
| .code = CO_OBJECT_VAR, |
| .nsub = 1, |
| .subs = g_2001_sub |
| }, |
| { |
| #if !LELY_NO_CO_OBJ_NAME |
| .name = CO_SDEV_STRING("Counter"), |
| #endif |
| .idx = 0x2100, |
| .code = CO_OBJECT_VAR, |
| .nsub = 1, |
| .subs = g_2100_sub |
| } |
| }; |
| |
| /**************************************************************************** |
| * Public Data |
| ****************************************************************************/ |
| |
| const struct co_sdev g_sdev_master = |
| { |
| .id = 0x01, |
| .name = NULL, |
| .vendor_name = CO_SDEV_STRING("Apache NuttX RTOS"), |
| .vendor_id = 0x00000000, |
| .product_name = NULL, |
| .product_code = 0x00000000, |
| .revision = 0x00000000, |
| .order_code = NULL, |
| .baud = CO_BAUD_125, |
| .rate = 0, |
| .lss = 0, |
| .dummy = 0x000000fe, |
| .nobj = 14, |
| .objs = g_g_sdev_master_objs |
| }; |
| |
| /**************************************************************************** |
| * Public Functions |
| ****************************************************************************/ |