lacteApp
C++17 service for Lacte hardware
Loading...
Searching...
No Matches
Протокол Lacte

Коммуникационные пакеты

Протокол поддерживает четыре основных типа пакетов для обмена с платой.
Запросы (псевдокод интерфейса):

GetInfo() -> optional<InfoPacketType>
GetVersion() -> optional<VersionPacketType>
GetUID() -> optional<UIDPacketType>
GetRFID() -> optional<RFIDNumberType>
GetRFIDData() -> optional<RFIDDataPacketType>
Restart() -> optional<BootAnswerType>

Типы пакетов

1. InfoPacketType

Содержит:

  • BoardStatus status — состояние платы: IDLE(0), CALIBRATION(1), ERROR(2), READY(3), WORK(4);
  • ErrorFlags errors — флаги ошибок:
    • Calibration (1<<0)
    • Motor (1<<1)
    • RFID (1<<2)
    • RFID_NoCard (1<<3)
    • RFID_BadCard (1<<4)
    • InvalidTime
    • ShelfLifeExceeded
    • UsageTimeExceeded
  • RFIDNumberType rfid — номер RFID метки упаковки.

2. VersionPacketType

Содержит:

  • version_major — основной номер версии платы (целое неотрицательное число)
  • version_minor — дополнительный номер версии (целое неотрицательное число)

3. UIDPacketType

Содержит:

  • uid — уникальный идентификатор платы, 12 байт в HEX (например, 0x000102030405060708090a0b)

4. RFIDDataPacketType

Полная структура данных с упаковки/устройства:

  • MagicWord magicWord (ожидаемый 0xCCAA)
  • LacteId lacteId
  • LacteSn lacteSn — серийник пачки
  • ProductVolume productVolume
  • ProdDate prodDateUnix timestamp
  • ProductShelfLife shelfLife — резерв
  • UsageTime usageTime
  • McuUid mcuUid — серийник платы
  • MachineSn machineSn — серийник устройства
  • ActivationTime activationTime
  • MilkCounter milkCounter
  • TimeCounter timeCounter

4. BootAnswerType

Согласие на перезагрузку на перезагрузку.

  • answer да или нет.