128 lines
6.3 KiB
C++
128 lines
6.3 KiB
C++
#include <Arduino.h>
|
||
#ifndef Oregon_TM_h
|
||
#define Oregon_TM_h
|
||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
// This file is part of the Arduino OREGON_NR library.
|
||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
//
|
||
// The MIT License (MIT)
|
||
//
|
||
// Copyright (c) 2021 Sergey Zawislak
|
||
//
|
||
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
|
||
// to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||
// and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||
//
|
||
// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||
//
|
||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||
// IN THE SOFTWARE.
|
||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
// Этот файл - часть библиотеки OREGON_NR
|
||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
//
|
||
// Copyright (c) 2021 Сергей Зависляк
|
||
//
|
||
// Данная лицензия разрешает лицам, получившим копию данного программного обеспечения и сопутствующей документации
|
||
// (в дальнейшем именуемыми «Программное Обеспечение»), безвозмездно использовать Программное Обеспечение без ограничений,
|
||
// включая неограниченное право на использование, копирование, изменение, слияние, публикацию, распространение, сублицензирование
|
||
// и/или продажу копий Программного Обеспечения, а также лицам, которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий:
|
||
//
|
||
// Указанное выше уведомление об авторском праве и данные условия должны быть включены во все копии или значимые части данного Программного Обеспечения.
|
||
//
|
||
// ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ ГАРАНТИИ ТОВАРНОЙ
|
||
// ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И ОТСУТСТВИЯ НАРУШЕНИЙ, НО НЕ ОГРАНИЧИВАЯСЬ ИМИ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ
|
||
// НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО КАКИМ-ЛИБО ИСКАМ, ЗА УЩЕРБ ИЛИ ПО ИНЫМ ТРЕБОВАНИЯМ, В ТОМ ЧИСЛЕ, ПРИ ДЕЙСТВИИ КОНТРАКТА, ДЕЛИКТЕ ИЛИ ИНОЙ СИТУАЦИИ,
|
||
// ВОЗНИКШИМ ИЗ-ЗА ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫХ ДЕЙСТВИЙ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.
|
||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
||
#define TR_TIME 488
|
||
#define TWOTR_TIME 976
|
||
#define PULSE_SHORTEN_2 93
|
||
#define PULSE_SHORTEN_3 138
|
||
|
||
#define THGN132 0x1D20
|
||
#define THN132 0xEC40
|
||
#define THGR810 0xF824
|
||
#define RTGN318 0xDCC3
|
||
#define THP 0x5500
|
||
#define BTHGN129 0x5D53
|
||
#define BTHR968 0x5D60
|
||
|
||
|
||
#define OREGON_SEND_BUFFER_SIZE 12
|
||
|
||
//static byte TX_PIN = 4;
|
||
static byte TX_PIN;
|
||
|
||
|
||
class Oregon_TM
|
||
{
|
||
public:
|
||
|
||
int max_buffer_size = OREGON_SEND_BUFFER_SIZE;
|
||
int buffer_size = 24;
|
||
byte* SendBuffer;
|
||
byte protocol = 2;
|
||
word sens_type = 0x0000;
|
||
int timing_corrector2 = 4;
|
||
int timing_corrector3 = 2;
|
||
|
||
Oregon_TM(byte, int);
|
||
Oregon_TM(byte);
|
||
Oregon_TM();
|
||
void setType(word);
|
||
void setChannel( byte);
|
||
void setId(byte);
|
||
void setBatteryFlag(bool);
|
||
void setStartCount(byte);
|
||
void setTemperature(float);
|
||
void setHumidity(byte);
|
||
void setComfort(float, byte);
|
||
void setPressure(float);
|
||
bool transmit();
|
||
void SendPacket();
|
||
|
||
void setErrorTHP();
|
||
void setPressureTHP(float);
|
||
void setTemperatureTHP(float);
|
||
void setBatteryTHP(word);
|
||
void setChannelTHP(byte);
|
||
void setHumidityTHP(float);
|
||
|
||
|
||
|
||
private:
|
||
|
||
void sendZero(void);
|
||
void sendOne(void);
|
||
void sendMSB(const byte);
|
||
void sendLSB(const byte);
|
||
void sendData();
|
||
void sendOregon();
|
||
void sendPreamble();
|
||
void calculateAndSetChecksum132();
|
||
void calculateAndSetChecksum318();
|
||
void calculateAndSetChecksum810();
|
||
void calculateAndSetChecksum968();
|
||
void calculateAndSetChecksum129();
|
||
void calculateAndSetChecksum132S();
|
||
|
||
|
||
void calculateAndSetChecksumTHP();
|
||
|
||
unsigned long time_marker = 0;
|
||
unsigned long time_marker_send = 0;
|
||
unsigned long send_time = 0;
|
||
bool prevbit = 1;
|
||
bool prevstate = 1;
|
||
|
||
|
||
};
|
||
|
||
#endif
|
||
|