// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
/**
* Project Untitled
* @brief The request primitive is used to request that the remote 07.10 entity changes a specific DLC connection
* parameters. An indication is sent to the remote port emulation entity. The remote emulation entity replies with a
* response witch is forwarded as an confirmation to the originating port emulating entity.
*/
#ifndef _TS0710_PARNEG_H
#define _TS0710_PARNEG_H
#include "TS0710.h"
// control channel - DLC parameter negotiation (PN)
class TS0710_PARNEG
{
public:
struct DLCParameters_t
{
TypeOfFrame_e TypeOfFrame; //!< Type of frame [UIH | UI | I, default: UIH]
int ConvergenceLayer; //!< Convergence layer [1 - 4, default: 1]
int Priority; //!< Priority [0-63], default according to table in subclause 5.6
int AckTime; //!< Acknowledgement Timer [10 ms - 25.5 sec, deault: 100 ms]
int MaxFrameSize; //!< Maximum Frame Size [1 – 32768, default: 31 for the basic option and 64 for the advanced
//!< option]
int MaxNumOfRetransmissions; //!< Maximum number of retransmissions [0 – 100, default : 3]
int MuxCtrlRespTime; //!< Response timer for the multiplexor control channel [0,01s-2,55s, default: 0,3s]
int WakeUpRespTime; //!< Wake up response timer [1s – 255s, default 10s]
int ErrRecovWindowSize; //!< Window size for error recovery mode [1 – 7, default : 2]
};
TS0710_PARNEG()
{}
~TS0710_PARNEG()
{}
private:
/**
* @param DLC
* @param DLC_parameters
*/
void request(DLCI_t DLC, DLCParameters_t DLC_parameters);
/**
* @param DLC
* @param DLC_parameters
*/
void indication(DLCI_t DLC, DLCParameters_t DLC_parameters);
/**
* @param DLC
* @param DLC_parameters
* @param accept
*/
void response(DLCI_t DLC, DLCParameters_t DLC_parameters, bool accept);
/**
* @param DLC
* @param DLC_parameters
* @param accept
*/
void confirm(DLCI_t DLC, DLCParameters_t DLC_parameters, bool accept);
};
#endif //_TS0710_PARNEG_H