Newer
Older
Card9-Skyworks / firmware / core / protocol.h
#ifndef PROTOCOL_H__
#define PROTOCOL_H__

#define PacketIdentifier 0xA1
enum eventTypeDef
{
    CardDidScan,DoorDidOpen,DoorDidClose,DoorReleaseDidTriggered,AlarmDidOn,AlarmDidOff
};
enum commandTypeDef
{
    DoDoorOpen,DoAlarmOn,DoAlarmOff
};
enum requestTypeDef
{
    RequestAuth
};
enum responseTypeDef
{
    ResponseNegative,ResponsePositive,ResponseNatural
};
enum packetTypeDef
{
    PacketTypeEvent,PacketTypeCommand,PacketTypeRequest,PacketTypeResponse
};
struct eventPayload{
    uint8_t eventType; //0->cardDidScan 1->doorDidOpen 2->doorDidClose 3->doorReleaseDidTriggered 4->alarmDidOn 5->alarmDidOff 
};
struct commandPayload{
    uint8_t commandType; //0->doDoorOpen 1->doAlarmOn 2->doAlarmOff
};
struct requestPayload{
    uint8_t requestType; //0->auth
    unsigned char param[];
};
struct authParam{
    uint32_t cardId; //little_endian
};
struct responsePayload{
    uint8_t responseType; //0->negative 1->positive 2->natural
    unsigned char param[];
};
struct packet{
    uint8_t characteristicAndVersion; // must be 0xA1
    uint8_t type; //0->event 1->command 2->request 3->response
    uint16_t payloadSize; //little_endian
    union{
        struct eventPayload event;
        struct commandPayload command;
        struct requestPayload request;
        struct responsePayload response;
    }payload;
};
#endif