19#ifndef SRC_SUPLA_SENSOR_OCR_IMPULSE_COUNTER_H_
20#define SRC_SUPLA_SENSOR_OCR_IMPULSE_COUNTER_H_
22#include <supla/clock/clock.h>
23#include <supla/device/factory_test.h>
25#include "virtual_impulse_counter.h"
30class OcrImpulseCounter :
public VirtualImpulseCounter {
33 virtual ~OcrImpulseCounter();
42 void addAvailableLightingMode(uint64_t mode);
43 void resetCounter()
override;
46 bool cleanupOcrTestModeConfig();
51 virtual bool takePhoto() = 0;
54 void releasePhotoResource();
56 virtual void releasePhoto() = 0;
58 virtual void setLedState(
int state) = 0;
60 bool handleLedStateBeforePhoto();
61 void handleLedStateAfterPhoto();
63 virtual bool sendPhotoToOcrServer(
const char *url,
67 const char *cropSettings) = 0;
68 void parseServerResponse(
const char *response,
int responseSize);
70 bool hasOcrConfig()
const override;
71 void clearOcrConfig()
override;
72 bool isOcrConfigMissing()
const override;
74 void fillChannelConfig(
void *channelConfig,
int *size)
override;
75 void fillChannelOcrConfig(
void *channelConfig,
int *size)
override;
76 void fixOcrLightingMode();
77 void stopResultCheck();
79 virtual bool getStatusFromOcrServer(
const char *url,
83 void parseStatus(
const char *response,
int responseSize);
85 void generateUrl(
char *url,
87 const char *photoUuid =
nullptr)
const;
90 bool ocrConfigReceived =
false;
91 uint64_t availableLightingModes = 0;
92 uint32_t lastPhotoTakeTimestamp = 0;
93 uint32_t lastOcrInteractionTimestamp = 0;
94 uint32_t ledTurnOnTimestamp = 0;
95 char lastUUIDToCheck[37] = {};
96 unsigned char *photoDataBuffer =
nullptr;
97 int photoDataSize = 0;
100 uint64_t lastCorrectOcrReading = 0;
101 time_t lastCorrectOcrReadingTimestamp = 0;
103 bool testMode =
false;
104 uint32_t testModeDelay = 0;
106 uint32_t photosCount = 0;
107 int32_t ocrTestExpectedResult = -1;
Definition SuplaDevice.h:93
Definition factory_test.h:45
void onLoadState() override
Second method called on element in SuplaDevice.begin().
Definition ocr_impulse_counter.cpp:218
void iterateAlways() override
Method called on each SuplaDevice iteration.
Definition ocr_impulse_counter.cpp:592
void onSaveState() override
Method called periodically during SuplaDevice iteration.
Definition ocr_impulse_counter.cpp:211
void onLoadConfig(SuplaDeviceClass *sdc) override
First method called on element in SuplaDevice.begin().
Definition ocr_impulse_counter.cpp:529
void onInit() override
Third method called on element in SuplaDevice.begin()
Definition ocr_impulse_counter.cpp:56
int handleCalcfgFromServer(TSD_DeviceCalCfgRequest *request) override
Handles CALCFG requests from server.
Definition ocr_impulse_counter.cpp:72
bool iterateConnected() override
Method called on each SuplaDevice iteration when device is connected and registered to Supla server o...
Definition ocr_impulse_counter.cpp:235