/*
 * value_struct.h
 *
 *  Created on: Dec 25, 2024
 *      Author: home
 */

#ifndef INC_VALUE_STRUCT_H_
#define INC_VALUE_STRUCT_H_

#include <stdint.h>
#include "can.h"

#define TRANS_IDLE 0x00
#define TRANS_NEW_VALUE 0x01
#define TRANS_VALUE_SENT 0x02
#define TRANS_VALUE_DELIVERED 0x03

// Определение структуры
typedef struct {
	volatile uint32_t HEAD_ID;
    volatile uint32_t CUR_VALUE;
    volatile uint32_t NEW_VALUE;
    volatile uint32_t TRANSACTION;
    volatile uint32_t COUTN_TRANS;
    volatile uint32_t PRINT;
} value_Struct;

// Определение структуры
typedef struct {
	volatile uint32_t add;
	//хранение посылки x[0]....x[7]
	// uint32_t - атомарная перезапись
	volatile uint32_t x0;//TODO сделать через union
	volatile uint32_t x1;//TODO сделать через union
	volatile uint32_t x2;//TODO сделать через union
	volatile uint32_t x3;//TODO сделать через union
	volatile uint32_t x4;//TODO сделать через union
	volatile uint32_t x5;//TODO сделать через union
	volatile uint32_t x6;//TODO сделать через union
	volatile uint32_t x7;//TODO сделать через union

} pack_CAN;



// Объявление функции инициализации
void initValueStruct(value_Struct *vStruct);

// Объявление функции печати значений структуры
void printValueStruct(const value_Struct *vStruct);
void printPackStruct(const pack_CAN *curPack, const pack_CAN *newPack, uint32_t trans);

#endif /* INC_VALUE_STRUCT_H_ */
