--- /dev/null
+#ifndef __cbus_h
+#define __cbus_h
+
+#define CBUS_MAX_FRAME_LENGTH 256
+#define CBUS_MAX_TRANSMIT_LENGTH 256
+#define CBUS_MAX_MSG_LENGTH 256
+
+enum CBUS_RX_States {
+ CBUS_RX_Header,
+ CBUS_RX_FrameType1,
+ CBUS_RX_FrameType2,
+ CBUS_RX_GetLengthLB,
+ CBUS_RX_GetLengthHB,
+ CBUS_RX_GetMessage,
+ CBUS_RX_GetCSum
+};
+
+
+typedef struct{
+ int checksum;
+ int BufferCount;
+ enum CBUS_RX_States state;
+ int FrameHeader1;
+ int FrameHeader2;
+ int FrameType1;
+ int FrameType2;
+ int MessageLength;
+ unsigned char buffer[CBUS_MAX_FRAME_LENGTH];
+ u8 prev_rx_byte;
+} CBUS_IncomingFrame;
+
+typedef struct {
+ int message_length;
+ unsigned char buffer[CBUS_MAX_MSG_LENGTH];
+} CBUS_OutgoingMessage;
+
+typedef struct{
+ CBUS_IncomingFrame i;
+} CBUS_Link;
+
+GSM_Error CBUS_Initialise(GSM_Statemachine *state);
+
+void sendat(char *msg);
+
+#ifdef __cbus_c /* Prototype functions for cbus.c only */
+
+GSM_Error CBUS_Loop(struct timeval *timeout);
+bool CBUS_OpenSerial();
+void CBUS_RX_StateMachine(unsigned char rx_byte);
+int CBUS_TX_SendFrame(u8 message_length, u8 message_type, u8 *buffer);
+int CBUS_SendMessage(u16 messagesize, u8 messagetype, void *message);
+int CBUS_TX_SendAck(u8 message_type, u8 message_seq);
+
+#endif /* #ifdef __cbus_c */
+
+#endif /* #ifndef __cbus_h */
+