esphome_elektromer_han/components/xt211/cosem.h

230 lines
7.4 KiB
C

//
// --------------------------------------------------------------------------
// 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
//---------------------------------------------------------------------------
#ifndef COSEM_H
#define COSEM_H
#ifdef __cplusplus
extern "C" {
#endif
#include "gxobjects.h"
#include "dlmssettings.h"
#ifndef DLMS_IGNORE_MALLOC
int cosem_createObject(
DLMS_OBJECT_TYPE type,
gxObject** object);
int cosem_createObject2(
DLMS_OBJECT_TYPE type,
const char* ln,
gxObject** object);
#endif //DLMS_IGNORE_MALLOC
int cosem_setLogicalName(
gxObject* object,
const unsigned char* value);
#ifndef DLMS_IGNORE_MALLOC
int cosem_init(
gxObject* object,
DLMS_OBJECT_TYPE type,
const char* logicalNameString);
#endif //DLMS_IGNORE_MALLOC
int cosem_init2(
gxObject* object,
DLMS_OBJECT_TYPE type,
const unsigned char* ln);
//This initialize method will also check the size of the object type and compare it with the expected size.
int cosem_init3(
gxObject* object,
const uint16_t expectedSize,
DLMS_OBJECT_TYPE type,
const unsigned char* ln);
//This initialize method will also check the size of the object type and compare it with the expected size.
int cosem_init4(
void* object,
const uint16_t expectedSize,
DLMS_OBJECT_TYPE type,
const unsigned char* ln);
int cosem_checkStructure(gxByteBuffer* bb, uint16_t expectedItemCount);
int cosem_getStructure(gxByteBuffer* bb, uint16_t* count);
int cosem_checkArray(gxByteBuffer* bb, uint16_t* count);
int cosem_checkArray2(gxByteBuffer* bb, uint16_t* count, unsigned char checkDataType);
int cosem_getUInt8(gxByteBuffer* bb, unsigned char* value);
int cosem_getUInt16(gxByteBuffer* bb, uint16_t* value);
int cosem_getUInt32(gxByteBuffer* bb, uint32_t* value);
int cosem_getInt8(gxByteBuffer* bb, signed char* value);
int cosem_getInt16(gxByteBuffer* bb, int16_t* value);
int cosem_getInt32(gxByteBuffer* bb, int32_t* value);
int cosem_getOctetString(gxByteBuffer* bb, gxByteBuffer* value);
int cosem_getString(gxByteBuffer* bb, gxByteBuffer* value);
int cosem_getOctetString2(gxByteBuffer* bb, unsigned char* value, uint16_t capacity, uint16_t* size);
int cosem_getOctetString3(gxByteBuffer* bb, gxByteBuffer* value, unsigned char exact);
int cosem_getString2(gxByteBuffer* bb, char* value, uint16_t capacity);
//Get date-time value from the octet-string.
int cosem_getDateTimeFromOctetString(gxByteBuffer* bb, gxtime* value);
//Get date-time value from the octet-string.
int cosem_getDateFromOctetString(gxByteBuffer* bb, gxtime* value);
//Get date-time value from the octet-string.
int cosem_getTimeFromOctetString(gxByteBuffer* bb, gxtime* value);
//Get date-time value from the octet-string.
int cosem_getDateTimeFromOctetString2(gxByteBuffer* bb, gxtime* value, unsigned char checkDataType);
//Get date-time value from the octet-string.
int cosem_getDateFromOctetString2(gxByteBuffer* bb, gxtime* value, unsigned char checkDataType);
//Get date-time value from the octet-string.
int cosem_getTimeFromOctetString2(gxByteBuffer* bb, gxtime* value, unsigned char checkDataType);
//Get date-time value from the byte array.
int cosem_getDateTime(gxByteBuffer* bb, gxtime* value);
//Get date value from the byte array.
int cosem_getDate(gxByteBuffer* bb, gxtime* value);
//Get time value from the byte array.
int cosem_getTime(gxByteBuffer* bb, gxtime* value);
//Get date-time value from the byte array.
int cosem_getDateTime2(gxByteBuffer* bb, gxtime* value, unsigned char checkDataType);
//Get date value from the byte array.
int cosem_getDate2(gxByteBuffer* bb, gxtime* value, unsigned char checkDataType);
//Get time value from the byte array.
int cosem_getTime2(gxByteBuffer* bb, gxtime* value, unsigned char checkDataType);
//Get get bit string from the byte array.
int cosem_getBitString(gxByteBuffer* bb, bitArray* value);
//Get get bit string from the byte array.
int cosem_getBitString2(gxByteBuffer* bb, unsigned char* value, uint16_t capacity, uint16_t* size);
//Get integer value from bit string.
int cosem_getIntegerFromBitString(gxByteBuffer* bb, uint32_t* value);
int cosem_getVariant(gxByteBuffer* bb, dlmsVARIANT* value);
int cosem_getEnum(gxByteBuffer* bb, unsigned char* value);
int cosem_getBoolean(gxByteBuffer* bb, unsigned char* value);
int cosem_getUtf8String(gxByteBuffer* bb, gxByteBuffer* value);
int cosem_getUtf8String2(gxByteBuffer* bb, char* value, uint16_t capacity, uint16_t* size);
int cosem_setDateTimeAsOctetString(gxByteBuffer* bb, gxtime* value);
int cosem_setDateAsOctetString(gxByteBuffer* bb, gxtime* value);
int cosem_setBitString(gxByteBuffer* bb, uint32_t value, uint16_t count);
int cosem_setTimeAsOctetString(gxByteBuffer* bb, gxtime* value);
int cosem_setDateTime(gxByteBuffer* bb, gxtime* value);
int cosem_setDate(gxByteBuffer* bb, gxtime* value);
int cosem_setTime(gxByteBuffer* bb, gxtime* value);
int cosem_setOctetString(gxByteBuffer* bb, gxByteBuffer* value);
int cosem_setString(gxByteBuffer* bb, const char* value, uint16_t len);
int cosem_setString2(gxByteBuffer* bb, gxByteBuffer* value);
int cosem_setOctetString2(
gxByteBuffer* bb,
const unsigned char* value,
uint16_t size);
int cosem_setUInt8(gxByteBuffer* bb, unsigned char value);
int cosem_setUInt16(gxByteBuffer* bb, uint16_t value);
int cosem_setUInt32(gxByteBuffer* bb, uint32_t value);
int cosem_setUInt64(gxByteBuffer* bb, uint64_t* value);
int cosem_setInt8(gxByteBuffer* bb, char value);
int cosem_setInt16(gxByteBuffer* bb, int16_t value);
int cosem_setInt32(gxByteBuffer* bb, int32_t value);
int cosem_setInt64(gxByteBuffer* bb, int64_t* value);
int cosem_setVariant(gxByteBuffer* bb, dlmsVARIANT* value);
int cosem_setStructure(gxByteBuffer* bb, uint16_t count);
int cosem_setArray(gxByteBuffer* bb, uint16_t count);
int cosem_setEnum(gxByteBuffer* bb, unsigned char value);
int cosem_setBoolean(gxByteBuffer* bb, unsigned char value);
#ifndef DLMS_IGNORE_PROFILE_GENERIC
int cosem_getColumns(
gxArray* captureObjects,
unsigned char selector,
dlmsVARIANT* parameters,
gxArray* columns);
#endif //DLMS_IGNORE_PROFILE_GENERIC
//Find object from settings object and create if not found.
int cosem_findObjectByLN(
dlmsSettings* settings,
DLMS_OBJECT_TYPE ot,
const unsigned char* ln,
gxObject** object);
#ifdef __cplusplus
}
#endif
#endif //COSEM_H