195 lines
4.6 KiB
C
195 lines
4.6 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 PARAMETERS_H
|
|
#define PARAMETERS_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
#include "gxignore.h"
|
|
#include "dlmssettings.h"
|
|
|
|
#ifndef DLMS_IGNORE_ASSOCIATION_SHORT_NAME
|
|
/**
|
|
* SN Parameters
|
|
*/
|
|
typedef struct
|
|
{
|
|
/**
|
|
* DLMS settings.
|
|
*/
|
|
dlmsSettings *settings;
|
|
/**
|
|
* DLMS command.
|
|
*/
|
|
DLMS_COMMAND command;
|
|
/**
|
|
* Encrypted DLMS command.
|
|
*/
|
|
DLMS_COMMAND encryptedCommand;
|
|
/**
|
|
* Request type.
|
|
*/
|
|
unsigned char requestType;
|
|
/**
|
|
* Attribute descriptor.
|
|
*/
|
|
gxByteBuffer* attributeDescriptor;
|
|
/**
|
|
* Data.
|
|
*/
|
|
gxByteBuffer* data;
|
|
/**
|
|
* Send date and time. This is used in Data notification messages.
|
|
*/
|
|
#ifdef DLMS_USE_EPOCH_TIME
|
|
uint32_t time;
|
|
#else
|
|
struct tm* time;
|
|
#endif //DLMS_USE_EPOCH_TIME
|
|
/**
|
|
* Item Count.
|
|
*/
|
|
int count;
|
|
|
|
/**
|
|
* Are there more data to send or more data to receive.
|
|
*/
|
|
unsigned char multipleBlocks;
|
|
|
|
/**
|
|
* Is this last block.
|
|
*/
|
|
unsigned char lastBlock;
|
|
/**
|
|
* Block index.
|
|
*/
|
|
uint16_t blockIndex;
|
|
//Serialize data to this PDU.
|
|
#ifdef DLMS_IGNORE_MALLOC
|
|
gxByteBuffer* serializedPdu;
|
|
#endif //DLMS_IGNORE_MALLOC
|
|
} gxSNParameters;
|
|
|
|
void params_initSN(
|
|
gxSNParameters *target,
|
|
dlmsSettings *settings,
|
|
DLMS_COMMAND command,
|
|
int count,
|
|
unsigned char commandType,
|
|
gxByteBuffer* attributeDescriptor,
|
|
gxByteBuffer* data,
|
|
DLMS_COMMAND encryptedCommand);
|
|
|
|
#endif //DLMS_IGNORE_ASSOCIATION_SHORT_NAME
|
|
|
|
/**
|
|
* LN Parameters
|
|
*/
|
|
typedef struct
|
|
{
|
|
/**
|
|
* DLMS settings.
|
|
*/
|
|
dlmsSettings *settings;
|
|
/**
|
|
* DLMS command.
|
|
*/
|
|
DLMS_COMMAND command;
|
|
/**
|
|
* Encrypted DLMS command.
|
|
*/
|
|
DLMS_COMMAND encryptedCommand;
|
|
/**
|
|
* Request type.
|
|
*/
|
|
unsigned char requestType;
|
|
/**
|
|
* Attribute descriptor.
|
|
*/
|
|
gxByteBuffer* attributeDescriptor;
|
|
/**
|
|
* Data.
|
|
*/
|
|
gxByteBuffer* data;
|
|
/**
|
|
* Send date and time. This is used in Data notification messages.
|
|
*/
|
|
#ifdef DLMS_USE_EPOCH_TIME
|
|
uint32_t time;
|
|
#else
|
|
struct tm* time;
|
|
#endif // DLMS_USE_EPOCH_TIME
|
|
/**
|
|
* Reply status.
|
|
*/
|
|
unsigned char status;
|
|
/**
|
|
* Are there more data to send or more data to receive.
|
|
*/
|
|
unsigned char multipleBlocks;
|
|
/**
|
|
* Is this last block in send.
|
|
*/
|
|
unsigned char lastBlock;
|
|
/**
|
|
* Block index.
|
|
*/
|
|
uint32_t blockIndex;
|
|
/**
|
|
* Received invoke ID.
|
|
*/
|
|
unsigned char invokeId;
|
|
//Serialize data to this PDU.
|
|
gxByteBuffer* serializedPdu;
|
|
} gxLNParameters;
|
|
|
|
void params_initLN(
|
|
gxLNParameters *target,
|
|
dlmsSettings* settings,
|
|
unsigned char invokeId,
|
|
DLMS_COMMAND command,
|
|
unsigned char commandType,
|
|
gxByteBuffer* attributeDescriptor,
|
|
gxByteBuffer* data,
|
|
unsigned char status,
|
|
DLMS_COMMAND encryptedCommand,
|
|
unsigned char multipleBlocks,
|
|
unsigned char lastBlock);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif //PARAMETERS_H
|