package proto type ( clientID uint16 flag uint8 state uint8 version uint8 ) /* 0 - AUTH REQUEST 1 - AUTH RESPONSE 2 - CLIENT DATA 254 - ACK 255 - NAK */ const ( AUTH_REQUEST flag = iota AUTH_RESPONSE CLIENT_DATA ACK flag = 254 NAK flag = 255 ) const ( NOT_CONNECTED state = iota SENT_AUTH AUTH_TOT AUTHENTICATED CONNECTED SENT_DATA RECEIVED_ACK RECEIVED_NAK ) const ( VERSION version = 1 ) /* =================================================== | VERSION 1 byte | FLAG 1 byte | CLIENT ID 2 byte | =================================================== | LEN OF DATA 4 bytes | =================================================== */ type Header struct { Version version Flag flag ClientID clientID DataLen uint32 } /* AUTH DATA (REQUEST) =================================================== | AUTH KEY 0 4 bytes | =================================================== */ type Request struct { Akey_0 uint64 } /* AUTH DATA (RESPONSE) =================================================== | CLIENT KEY 0 4 bytes | =================================================== =================================================== | CLIENT KEY 1 4 bytes | =================================================== =================================================== | CLIENT KEY 2 4 bytes | =================================================== =================================================== | CLIENT KEY 3 4 bytes | =================================================== */ type Response struct { CKey_0 uint32 Ckey_1 uint32 Ckey_2 uint32 Ckey_3 uint32 } /* CLIENT DATA =================================================== | CLIENT KEY 0 4 bytes | =================================================== =================================================== | CLIENT KEY 1 4 bytes | =================================================== =================================================== | CLIENT KEY 2 4 bytes | =================================================== =================================================== | CLIENT KEY 3 4 bytes | =================================================== =================================================== | NOW 4 bytes | =================================================== =================================================== | DAY 4 bytes | =================================================== =================================================== | EXPORT 4 bytes | =================================================== =================================================== | GAS 4 bytes | =================================================== */ type Energy struct { CKey Response Now float32 Day float32 Export float32 Gas float32 } type Session struct { CKey_p1 uint64 Ckey_p2 uint64 Header Header Mpan uint64 State state }