4#ifndef SRC_SUPLA_SENSOR_OCR_IMPULSE_COUNTER_H_
5#define SRC_SUPLA_SENSOR_OCR_IMPULSE_COUNTER_H_
7#include <supla/clock/clock.h>
8#include <supla/device/factory_test.h>
10#include "virtual_impulse_counter.h"
27 void addAvailableLightingMode(uint64_t mode);
28 void resetCounter()
override;
31 bool cleanupOcrTestModeConfig();
36 virtual bool takePhoto() = 0;
39 void releasePhotoResource();
41 virtual void releasePhoto() = 0;
43 virtual void setLedState(
int state) = 0;
45 bool handleLedStateBeforePhoto();
46 void handleLedStateAfterPhoto();
49 virtual bool sendPhotoToOcrServer(
const char *url,
53 const char *cropSettings) = 0;
54 void parseServerResponse(
const char *response,
int responseSize);
56 void clearOcrConfig();
59 void fillChannelConfig(
void *channelConfig,
61 uint8_t configType)
override;
62 void fixOcrLightingMode();
63 void stopResultCheck();
65 virtual bool getStatusFromOcrServer(
const char *url,
69 void parseStatus(
const char *response,
int responseSize);
71 void generateUrl(
char *url,
73 const char *photoUuid =
nullptr)
const;
76 uint64_t availableLightingModes = 0;
77 uint32_t lastPhotoTakeTimestamp = 0;
78 uint32_t lastOcrInteractionTimestamp = 0;
79 uint32_t ledTurnOnTimestamp = 0;
80 char lastUUIDToCheck[37] = {};
81 unsigned char *photoDataBuffer =
nullptr;
82 int photoDataSize = 0;
85 uint64_t lastCorrectOcrReading = 0;
86 time_t lastCorrectOcrReadingTimestamp = 0;
88 bool testMode =
false;
89 uint32_t testModeDelay = 0;
91 uint32_t photosCount = 0;
92 int32_t ocrTestExpectedResult = -1;
Definition SuplaDevice.h:167
Definition factory_test.h:30
Definition supla_srpc.h:46
Definition ocr_impulse_counter.h:15
void onLoadState() override
Second method called on element in SuplaDevice.begin().
Definition ocr_impulse_counter.cpp:191
void iterateAlways() override
Method called on each SuplaDevice iteration.
Definition ocr_impulse_counter.cpp:566
void onSaveState() override
Method called periodically during SuplaDevice iteration.
Definition ocr_impulse_counter.cpp:184
void onLoadConfig(SuplaDeviceClass *sdc) override
First method called on element in SuplaDevice.begin().
Definition ocr_impulse_counter.cpp:503
void onInit() override
Third method called on element in SuplaDevice.begin()
Definition ocr_impulse_counter.cpp:39
void onRegistered(Supla::Protocol::SuplaSrpc *suplaSrpc) override
Method called each time when device successfully registers to Supla server.
Definition ocr_impulse_counter.cpp:50
int handleCalcfgFromServer(TSD_DeviceCalCfgRequest *request) override
Handles CALCFG requests from server.
Definition ocr_impulse_counter.cpp:55
bool iterateConnected() override
Method called on each SuplaDevice iteration when device is connected and registered to Supla server o...
Definition ocr_impulse_counter.cpp:208
Definition virtual_impulse_counter.h:14