// // -------------------------------------------------------------------------- // Gurux Ltd // // // // Filename: $HeadURL$ // // Version: $Revision$, // $Date$ // $Author$ // // Copyright (c) Gurux Ltd // //--------------------------------------------------------------------------- // // DESCRIPTION // // This file is a part of Gurux Device Framework. // // Gurux Device Framework is Open Source software; you can redistribute it // and/or modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; version 2 of the License. // Gurux Device Framework is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. // // This code is licensed under the GNU General Public License v2. // Full text may be retrieved at http://www.gnu.org/licenses/gpl-2.0.txt //--------------------------------------------------------------------------- #include "gxignore.h" #if defined(_WIN32) || defined(_WIN64) || defined(__linux__) #include #endif #include "gxmem.h" #if _MSC_VER > 1400 #include #endif #include "gxset.h" #include "cosem.h" int cosem_setValue(dlmsSettings* settings, gxValueEventArg* e) { int ret = DLMS_ERROR_CODE_OK; if (e->index == 1) { #if defined(DLMS_IGNORE_MALLOC) || defined(DLMS_COSEM_EXACT_DATA_TYPES) ret = cosem_getOctetString2(e->value.byteArr, e->target->logicalName, 6, NULL); #else if (e->value.byteArr == NULL || e->value.byteArr->size - e->value.byteArr->position != 6) { ret = DLMS_ERROR_CODE_INVALID_PARAMETER; } else { ret = bb_get(e->value.byteArr, e->target->logicalName, 6); } #endif //DLMS_IGNORE_MALLOC return ret; } switch (e->target->objectType) { #ifndef DLMS_IGNORE_DATA case DLMS_OBJECT_TYPE_DATA: ret = cosem_setData(e); break; #endif //DLMS_IGNORE_DATA #ifndef DLMS_IGNORE_REGISTER case DLMS_OBJECT_TYPE_REGISTER: ret = cosem_setRegister((gxRegister*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_REGISTER #ifndef DLMS_IGNORE_CLOCK case DLMS_OBJECT_TYPE_CLOCK: ret = cosem_setClock(settings, (gxClock*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_CLOCK #ifndef DLMS_IGNORE_ACTION_SCHEDULE case DLMS_OBJECT_TYPE_ACTION_SCHEDULE: ret = cosem_setActionSchedule(settings, (gxActionSchedule*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_ACTION_SCHEDULE #ifndef DLMS_IGNORE_ACTIVITY_CALENDAR case DLMS_OBJECT_TYPE_ACTIVITY_CALENDAR: ret = cosem_setActivityCalendar(settings, (gxActivityCalendar*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_ACTIVITY_CALENDAR #ifndef DLMS_IGNORE_ASSOCIATION_LOGICAL_NAME case DLMS_OBJECT_TYPE_ASSOCIATION_LOGICAL_NAME: ret = cosem_setAssociationLogicalName(settings, (gxAssociationLogicalName*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_ASSOCIATION_LOGICAL_NAME #ifndef DLMS_IGNORE_ASSOCIATION_SHORT_NAME case DLMS_OBJECT_TYPE_ASSOCIATION_SHORT_NAME: ret = cosem_setAssociationShortName(settings, (gxAssociationShortName*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_ASSOCIATION_SHORT_NAME #ifndef DLMS_IGNORE_AUTO_ANSWER case DLMS_OBJECT_TYPE_AUTO_ANSWER: ret = cosem_setAutoAnswer((gxAutoAnswer*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_AUTO_ANSWER #ifndef DLMS_IGNORE_AUTO_CONNECT case DLMS_OBJECT_TYPE_AUTO_CONNECT: ret = cosem_setAutoConnect((gxAutoConnect*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_AUTO_CONNECT #ifndef DLMS_IGNORE_DEMAND_REGISTER case DLMS_OBJECT_TYPE_DEMAND_REGISTER: ret = cosem_setDemandRegister((gxDemandRegister*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_DEMAND_REGISTER #ifndef DLMS_IGNORE_MAC_ADDRESS_SETUP case DLMS_OBJECT_TYPE_MAC_ADDRESS_SETUP: ret = cosem_setMacAddressSetup((gxMacAddressSetup*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_MAC_ADDRESS_SETUP #ifndef DLMS_IGNORE_EXTENDED_REGISTER case DLMS_OBJECT_TYPE_EXTENDED_REGISTER: ret = cosem_setExtendedRegister((gxExtendedRegister*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_EXTENDED_REGISTER #ifndef DLMS_IGNORE_GPRS_SETUP case DLMS_OBJECT_TYPE_GPRS_SETUP: ret = cosem_setGprsSetup((gxGPRSSetup*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_GPRS_SETUP #ifndef DLMS_IGNORE_SECURITY_SETUP case DLMS_OBJECT_TYPE_SECURITY_SETUP: ret = cosem_setSecuritySetup(settings, (gxSecuritySetup*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_SECURITY_SETUP #ifndef DLMS_IGNORE_IEC_HDLC_SETUP case DLMS_OBJECT_TYPE_IEC_HDLC_SETUP: ret = cosem_setIecHdlcSetup((gxIecHdlcSetup*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_IEC_HDLC_SETUP #ifndef DLMS_IGNORE_IEC_LOCAL_PORT_SETUP case DLMS_OBJECT_TYPE_IEC_LOCAL_PORT_SETUP: ret = cosem_setIecLocalPortSetup((gxLocalPortSetup*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_IEC_LOCAL_PORT_SETUP #ifndef DLMS_IGNORE_IEC_TWISTED_PAIR_SETUP case DLMS_OBJECT_TYPE_IEC_TWISTED_PAIR_SETUP: ret = cosem_setIecTwistedPairSetup((gxIecTwistedPairSetup*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_IEC_TWISTED_PAIR_SETUP #ifndef DLMS_IGNORE_IP4_SETUP case DLMS_OBJECT_TYPE_IP4_SETUP: ret = cosem_setIP4Setup(settings, (gxIp4Setup*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_IP4_SETUP #ifndef DLMS_IGNORE_IP6_SETUP case DLMS_OBJECT_TYPE_IP6_SETUP: ret = cosem_setIP6Setup(settings, (gxIp6Setup*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_IP6_SETUP #ifndef DLMS_IGNORE_MBUS_SLAVE_PORT_SETUP case DLMS_OBJECT_TYPE_MBUS_SLAVE_PORT_SETUP: ret = cosem_setMbusSlavePortSetup((gxMbusSlavePortSetup*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_MBUS_SLAVE_PORT_SETUP #ifndef DLMS_IGNORE_IMAGE_TRANSFER case DLMS_OBJECT_TYPE_IMAGE_TRANSFER: ret = cosem_setImageTransfer((gxImageTransfer*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_IMAGE_TRANSFER #ifndef DLMS_IGNORE_DISCONNECT_CONTROL case DLMS_OBJECT_TYPE_DISCONNECT_CONTROL: ret = cosem_setDisconnectControl((gxDisconnectControl*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_DISCONNECT_CONTROL #ifndef DLMS_IGNORE_LIMITER case DLMS_OBJECT_TYPE_LIMITER: ret = cosem_setLimiter(settings, (gxLimiter*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_LIMITER #ifndef DLMS_IGNORE_MBUS_CLIENT case DLMS_OBJECT_TYPE_MBUS_CLIENT: ret = cosem_setmMbusClient(settings, (gxMBusClient*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_MBUS_CLIENT #ifndef DLMS_IGNORE_MODEM_CONFIGURATION case DLMS_OBJECT_TYPE_MODEM_CONFIGURATION: ret = cosem_setModemConfiguration((gxModemConfiguration*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_MODEM_CONFIGURATION #ifndef DLMS_IGNORE_PPP_SETUP case DLMS_OBJECT_TYPE_PPP_SETUP: ret = cosem_setPppSetup(settings, (gxPppSetup*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_PPP_SETUP #ifndef DLMS_IGNORE_PROFILE_GENERIC case DLMS_OBJECT_TYPE_PROFILE_GENERIC: ret = cosem_setProfileGeneric(settings, (gxProfileGeneric*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_PROFILE_GENERIC #ifndef DLMS_IGNORE_REGISTER_ACTIVATION case DLMS_OBJECT_TYPE_REGISTER_ACTIVATION: ret = cosem_setRegisterActivation(settings, e); break; #endif //DLMS_IGNORE_REGISTER_ACTIVATION #ifndef DLMS_IGNORE_REGISTER_MONITOR case DLMS_OBJECT_TYPE_REGISTER_MONITOR: ret = cosem_setRegisterMonitor(settings, (gxRegisterMonitor*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_REGISTER_MONITOR #ifndef DLMS_IGNORE_REGISTER_TABLE case DLMS_OBJECT_TYPE_REGISTER_TABLE: ret = cosem_setRegistertable((gxRegisterTable*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_REGISTER_TABLE #ifndef DLMS_IGNORE_ZIG_BEE_SAS_STARTUP case DLMS_OBJECT_TYPE_ZIG_BEE_SAS_STARTUP: //TODO: #if defined(_WIN32) || defined(_WIN64) || defined(__linux__) assert(0); #endif break; #endif //DLMS_IGNORE_ZIG_BEE_SAS_STARTUP #ifndef DLMS_IGNORE_ZIG_BEE_SAS_JOIN case DLMS_OBJECT_TYPE_ZIG_BEE_SAS_JOIN: //TODO: #if defined(_WIN32) || defined(_WIN64) || defined(__linux__) assert(0); #endif break; #endif //DLMS_IGNORE_ZIG_BEE_SAS_JOIN #ifndef DLMS_IGNORE_ZIG_BEE_SAS_APS_FRAGMENTATION case DLMS_OBJECT_TYPE_ZIG_BEE_SAS_APS_FRAGMENTATION: //TODO: #if defined(_WIN32) || defined(_WIN64) || defined(__linux__) assert(0); #endif break; #endif //DLMS_IGNORE_ZIG_BEE_SAS_APS_FRAGMENTATION #ifndef DLMS_IGNORE_ZIG_BEE_NETWORK_CONTROL case DLMS_OBJECT_TYPE_ZIG_BEE_NETWORK_CONTROL: //TODO: #if defined(_WIN32) || defined(_WIN64) || defined(__linux__) assert(0); #endif break; #endif //DLMS_IGNORE_ZIG_BEE_NETWORK_CONTROL #ifndef DLMS_IGNORE_SAP_ASSIGNMENT case DLMS_OBJECT_TYPE_SAP_ASSIGNMENT: ret = cosem_setSapAssignment((gxSapAssignment*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_SAP_ASSIGNMENT #ifndef DLMS_IGNORE_SCHEDULE case DLMS_OBJECT_TYPE_SCHEDULE: ret = cosem_setSchedule(settings, (gxSchedule*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_SCHEDULE #ifndef DLMS_IGNORE_SCRIPT_TABLE case DLMS_OBJECT_TYPE_SCRIPT_TABLE: ret = cosem_setScriptTable(settings, (gxScriptTable*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_SCRIPT_TABLE #ifndef DLMS_IGNORE_SPECIAL_DAYS_TABLE case DLMS_OBJECT_TYPE_SPECIAL_DAYS_TABLE: ret = cosem_setSpecialDaysTable((gxSpecialDaysTable*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_SPECIAL_DAYS_TABLE #ifndef DLMS_IGNORE_STATUS_MAPPING case DLMS_OBJECT_TYPE_STATUS_MAPPING: //TODO: #if defined(_WIN32) || defined(_WIN64) || defined(__linux__) assert(0); #endif break; #endif //DLMS_IGNORE_STATUS_MAPPING #ifndef DLMS_IGNORE_TCP_UDP_SETUP case DLMS_OBJECT_TYPE_TCP_UDP_SETUP: ret = cosem_setTcpUdpSetup(settings, (gxTcpUdpSetup*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_TCP_UDP_SETUP #ifndef DLMS_IGNORE_MBUS_DIAGNOSTIC case DLMS_OBJECT_TYPE_MBUS_DIAGNOSTIC: ret = cosem_setMbusDiagnostic((gxMbusDiagnostic*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_MBUS_DIAGNOSTIC #ifndef DLMS_IGNORE_MBUS_PORT_SETUP case DLMS_OBJECT_TYPE_MBUS_PORT_SETUP: ret = cosem_setMbusPortSetup((gxMBusPortSetup*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_MBUS_PORT_SETUP #ifndef DLMS_IGNORE_G3_PLC_MAC_LAYER_COUNTERS case DLMS_OBJECT_TYPE_G3_PLC_MAC_LAYER_COUNTERS: ret = cosem_setG3PlcMacLayerCounters((gxG3PlcMacLayerCounters*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_G3_PLC_MAC_LAYER_COUNTERS #ifndef DLMS_IGNORE_G3_PLC_MAC_SETUP case DLMS_OBJECT_TYPE_G3_PLC_MAC_SETUP: ret = cosem_setG3PlcMacSetup((gxG3PlcMacSetup*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_G3_PLC_MAC_SETUP #ifndef DLMS_IGNORE_G3_PLC_6LO_WPAN case DLMS_OBJECT_TYPE_G3_PLC_6LO_WPAN: ret = cosem_setG3Plc6LoWPAN((gxG3Plc6LoWPAN*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_G3_PLC_6LO_WPAN #ifndef DLMS_IGNORE_FUNCTION_CONTROL case DLMS_OBJECT_TYPE_FUNCTION_CONTROL: ret = cosem_setFunctionControl(settings, (gxFunctionControl*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_FUNCTION_CONTROL #ifndef DLMS_IGNORE_ARRAY_MANAGER case DLMS_OBJECT_TYPE_ARRAY_MANAGER: ret = cosem_setArrayManager(settings, (gxArrayManager*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_ARRAY_MANAGER #ifndef DLMS_IGNORE_UTILITY_TABLES case DLMS_OBJECT_TYPE_UTILITY_TABLES: ret = cosem_setUtilityTables((gxUtilityTables*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_UTILITY_TABLES #ifndef DLMS_IGNORE_MBUS_MASTER_PORT_SETUP case DLMS_OBJECT_TYPE_MBUS_MASTER_PORT_SETUP: ret = cosem_setMbusMasterPortSetup((gxMBusMasterPortSetup*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_MBUS_MASTER_PORT_SETUP #ifndef DLMS_IGNORE_PUSH_SETUP case DLMS_OBJECT_TYPE_PUSH_SETUP: ret = cosem_setPushSetup(settings, (gxPushSetup*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_PUSH_SETUP #ifndef DLMS_IGNORE_DATA_PROTECTION case DLMS_OBJECT_TYPE_DATA_PROTECTION: ret = DLMS_ERROR_CODE_INVALID_PARAMETER; #if defined(_WIN32) || defined(_WIN64) || defined(__linux__) assert(0); #endif break; #endif //DLMS_IGNORE_DATA_PROTECTION #ifndef DLMS_IGNORE_ACCOUNT case DLMS_OBJECT_TYPE_ACCOUNT: ret = cosem_setAccount((gxAccount*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_ACCOUNT #ifndef DLMS_IGNORE_CREDIT case DLMS_OBJECT_TYPE_CREDIT: ret = cosem_setCredit((gxCredit*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_CREDIT #ifndef DLMS_IGNORE_CHARGE case DLMS_OBJECT_TYPE_CHARGE: ret = cosem_setCharge(settings, (gxCharge*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_CHARGE #ifndef DLMS_IGNORE_TOKEN_GATEWAY case DLMS_OBJECT_TYPE_TOKEN_GATEWAY: ret = cosem_setTokenGateway((gxTokenGateway*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_TOKEN_GATEWAY #ifndef DLMS_IGNORE_GSM_DIAGNOSTIC case DLMS_OBJECT_TYPE_GSM_DIAGNOSTIC: ret = cosem_setGsmDiagnostic((gxGsmDiagnostic*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_GSM_DIAGNOSTIC #ifndef DLMS_IGNORE_COMPACT_DATA case DLMS_OBJECT_TYPE_COMPACT_DATA: ret = cosem_setCompactData(settings, (gxCompactData*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_COMPACT_DATA #ifndef DLMS_IGNORE_PARAMETER_MONITOR case DLMS_OBJECT_TYPE_PARAMETER_MONITOR: ret = cosem_setParameterMonitor(settings, (gxParameterMonitor*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_PARAMETER_MONITOR #ifndef DLMS_IGNORE_LLC_SSCS_SETUP case DLMS_OBJECT_TYPE_LLC_SSCS_SETUP: ret = cosem_setLlcSscsSetup(settings, (gxLlcSscsSetup*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_LLC_SSCS_SETUP #ifndef DLMS_IGNORE_PRIME_NB_OFDM_PLC_PHYSICAL_LAYER_COUNTERS case DLMS_OBJECT_TYPE_PRIME_NB_OFDM_PLC_PHYSICAL_LAYER_COUNTERS: ret = cosem_setPrimeNbOfdmPlcPhysicalLayerCounters(settings, (gxPrimeNbOfdmPlcPhysicalLayerCounters*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_PRIME_NB_OFDM_PLC_PHYSICAL_LAYER_COUNTERS #ifndef DLMS_IGNORE_PRIME_NB_OFDM_PLC_MAC_SETUP case DLMS_OBJECT_TYPE_PRIME_NB_OFDM_PLC_MAC_SETUP: ret = cosem_setPrimeNbOfdmPlcMacSetup(settings, (gxPrimeNbOfdmPlcMacSetup*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_PRIME_NB_OFDM_PLC_MAC_SETUP #ifndef DLMS_IGNORE_PRIME_NB_OFDM_PLC_MAC_FUNCTIONAL_PARAMETERS case DLMS_OBJECT_TYPE_PRIME_NB_OFDM_PLC_MAC_FUNCTIONAL_PARAMETERS: ret = cosem_setPrimeNbOfdmPlcMacFunctionalParameters(settings, (gxPrimeNbOfdmPlcMacFunctionalParameters*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_PRIME_NB_OFDM_PLC_MAC_FUNCTIONAL_PARAMETERS #ifndef DLMS_IGNORE_PRIME_NB_OFDM_PLC_MAC_COUNTERS case DLMS_OBJECT_TYPE_PRIME_NB_OFDM_PLC_MAC_COUNTERS: ret = cosem_setPrimeNbOfdmPlcMacCounters(settings, (gxPrimeNbOfdmPlcMacCounters*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_PRIME_NB_OFDM_PLC_MAC_COUNTERS #ifndef DLMS_IGNORE_PRIME_NB_OFDM_PLC_MAC_NETWORK_ADMINISTRATION_DATA case DLMS_OBJECT_TYPE_PRIME_NB_OFDM_PLC_MAC_NETWORK_ADMINISTRATION_DATA: ret = cosem_setPrimeNbOfdmPlcMacNetworkAdministrationData(settings, (gxPrimeNbOfdmPlcMacNetworkAdministrationData*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_PRIME_NB_OFDM_PLC_MAC_NETWORK_ADMINISTRATION_DATA #ifndef DLMS_IGNORE_PRIME_NB_OFDM_PLC_APPLICATIONS_IDENTIFICATION case DLMS_OBJECT_TYPE_PRIME_NB_OFDM_PLC_APPLICATIONS_IDENTIFICATION: ret = cosem_setPrimeNbOfdmPlcApplicationsIdentification(settings, (gxPrimeNbOfdmPlcApplicationsIdentification*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_PRIME_NB_OFDM_PLC_APPLICATIONS_IDENTIFICATION #ifndef DLMS_IGNORE_ARBITRATOR case DLMS_OBJECT_TYPE_ARBITRATOR: ret = cosem_setArbitrator(settings, (gxArbitrator*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_ARBITRATOR #ifndef DLMS_IGNORE_IEC_8802_LLC_TYPE1_SETUP case DLMS_OBJECT_TYPE_IEC_8802_LLC_TYPE1_SETUP: ret = cosem_setIec8802LlcType1Setup(settings, (gxIec8802LlcType1Setup*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_IEC_8802_LLC_TYPE1_SETUP #ifndef DLMS_IGNORE_IEC_8802_LLC_TYPE2_SETUP case DLMS_OBJECT_TYPE_IEC_8802_LLC_TYPE2_SETUP: ret = cosem_setIec8802LlcType2Setup(settings, (gxIec8802LlcType2Setup*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_IEC_8802_LLC_TYPE2_SETUP #ifndef DLMS_IGNORE_IEC_8802_LLC_TYPE3_SETUP case DLMS_OBJECT_TYPE_IEC_8802_LLC_TYPE3_SETUP: ret = cosem_setIec8802LlcType3Setup(settings, (gxIec8802LlcType3Setup*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_IEC_8802_LLC_TYPE3_SETUP #ifndef DLMS_IGNORE_SFSK_ACTIVE_INITIATOR case DLMS_OBJECT_TYPE_SFSK_ACTIVE_INITIATOR: ret = cosem_setSFSKActiveInitiator(settings, (gxSFSKActiveInitiator*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_SFSK_ACTIVE_INITIATOR #ifndef DLMS_IGNORE_SFSK_MAC_COUNTERS case DLMS_OBJECT_TYPE_SFSK_MAC_COUNTERS: ret = cosem_setFSKMacCounters(settings, (gxFSKMacCounters*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_SFSK_MAC_COUNTERS #ifndef DLMS_IGNORE_SFSK_MAC_SYNCHRONIZATION_TIMEOUTS case DLMS_OBJECT_TYPE_SFSK_MAC_SYNCHRONIZATION_TIMEOUTS: ret = cosem_setSFSKMacSynchronizationTimeouts(settings, (gxSFSKMacSynchronizationTimeouts*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_SFSK_MAC_SYNCHRONIZATION_TIMEOUTS #ifndef DLMS_IGNORE_SFSK_PHY_MAC_SETUP case DLMS_OBJECT_TYPE_SFSK_PHY_MAC_SETUP: ret = cosem_setSFSKPhyMacSetUp(settings, (gxSFSKPhyMacSetUp*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_SFSK_PHY_MAC_SETUP #ifndef DLMS_IGNORE_SFSK_REPORTING_SYSTEM_LIST case DLMS_OBJECT_TYPE_SFSK_REPORTING_SYSTEM_LIST: ret = cosem_setSFSKReportingSystemList(settings, (gxSFSKReportingSystemList*)e->target, e->index, &e->value); break; #endif //DLMS_IGNORE_SFSK_REPORTING_SYSTEM_LIST #ifdef DLMS_ITALIAN_STANDARD case DLMS_OBJECT_TYPE_TARIFF_PLAN: ret = cosem_setTariffPlan((gxTariffPlan*)e->target, e->index, &e->value); break; #endif //DLMS_ITALIAN_STANDARD default: //Unknown type. ret = DLMS_ERROR_CODE_INVALID_PARAMETER; } return ret; }