This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Structures inside a union

I did read some threads on the forum but could not solve my problem.

I want to make a union of to data sets (a structure and an array).

My code is as follows:

#define COMMS_BUFFER_SIZE 80
#define PROTOCOL_HEADER_SIZE 5
#define PROTOCOL_DATA_SIZE (COMMS_BUFFER_SIZE - PROTOCOL_HEADER_SIZE)

typedef struct { u8 StartByte; u8 Route; u8 Command; u8 Length; u8 HCS; u8 Data[PROTOCOL_DATA_SIZE];
}TProtocol;

typedef union { TProtocol Protocol; u8 Data[COMMS_BUFFER_SIZE];
}TCommsBuffer;

extern TCommsBuffer CommsBuffer;

I want to access the contents of "TCommsBuffer" in the protocol format (strucrure) or as a array.

CommsBuffer.Data[x] = x;
CommsBuffer.Protocol.StartByte = x;

But it gives me problems.

When I read data into the Protocol structure, it repeats the contents of the 1st 5 bytes of the protocol structure into its data section.

Is this the correct way to define the union?

0