feat: 全量同步 254 个常用的 Arduino 扩展库文件
This commit is contained in:
114
arduino-libs/arduino-cli/libraries/IRremote/src/TinyIRReceiver.h
Normal file
114
arduino-libs/arduino-cli/libraries/IRremote/src/TinyIRReceiver.h
Normal file
@@ -0,0 +1,114 @@
|
||||
/*
|
||||
* TinyIRReceiver.h
|
||||
*
|
||||
*
|
||||
* Copyright (C) 2021 Armin Joachimsmeyer
|
||||
* armin.joachimsmeyer@gmail.com
|
||||
*
|
||||
* This file is part of IRMP https://github.com/ukw100/IRMP.
|
||||
* This file is part of Arduino-IRremote https://github.com/Arduino-IRremote/Arduino-IRremote.
|
||||
*
|
||||
* TinyIRReceiver is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/gpl.html>.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _TINY_IR_RECEIVER_H
|
||||
#define _TINY_IR_RECEIVER_H
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
#include "LongUnion.h"
|
||||
|
||||
/** \addtogroup TinyReceiver Minimal receiver for NEC protocol
|
||||
* @{
|
||||
*/
|
||||
|
||||
/*
|
||||
* This function is called if a complete command was received and must be implemented by the including file (user code)
|
||||
*/
|
||||
void handleReceivedTinyIRData(uint16_t aAddress, uint8_t aCommand, bool isRepeat);
|
||||
|
||||
// LSB first, 1 start bit + 16 bit address + 8 bit data + 8 bit inverted data + 1 stop bit.
|
||||
// see: https://www.sbprojects.net/knowledge/ir/nec.php
|
||||
|
||||
#define NEC_ADDRESS_BITS 16 // 16 bit address or 8 bit address and 8 bit inverted address
|
||||
#define NEC_COMMAND_BITS 16 // Command and inverted command
|
||||
|
||||
#define NEC_BITS (NEC_ADDRESS_BITS + NEC_COMMAND_BITS)
|
||||
#define NEC_UNIT 560
|
||||
|
||||
#define NEC_HEADER_MARK (16 * NEC_UNIT) // 9000
|
||||
#define NEC_HEADER_SPACE (8 * NEC_UNIT) // 4500
|
||||
|
||||
#define NEC_BIT_MARK NEC_UNIT
|
||||
#define NEC_ONE_SPACE (3 * NEC_UNIT) // 1690
|
||||
#define NEC_ZERO_SPACE NEC_UNIT
|
||||
|
||||
#define NEC_REPEAT_HEADER_SPACE (4 * NEC_UNIT) // 2250
|
||||
#define NEC_REPEAT_PERIOD 110000 // Not used yet - Commands are repeated every 110 ms (measured from start to start) for as long as the key on the remote control is held down.
|
||||
|
||||
/*
|
||||
* Macros for comparing timing values
|
||||
*/
|
||||
#define lowerValue25Percent(aDuration) (aDuration - (aDuration / 4))
|
||||
#define upperValue25Percent(aDuration) (aDuration + (aDuration / 4))
|
||||
#define lowerValue50Percent(aDuration) (aDuration / 2) // (aDuration - (aDuration / 2))
|
||||
#define upperValue50Percent(aDuration) (aDuration + (aDuration / 2))
|
||||
|
||||
/*
|
||||
* The states for the state machine
|
||||
*/
|
||||
#define IR_RECEIVER_STATE_WAITING_FOR_START_MARK 0
|
||||
#define IR_RECEIVER_STATE_WAITING_FOR_START_SPACE 1
|
||||
#define IR_RECEIVER_STATE_WAITING_FOR_FIRST_DATA_MARK 2
|
||||
#define IR_RECEIVER_STATE_WAITING_FOR_DATA_SPACE 3
|
||||
#define IR_RECEIVER_STATE_WAITING_FOR_DATA_MARK 4
|
||||
#define IR_RECEIVER_STATE_WAITING_FOR_STOP_MARK 5
|
||||
/**
|
||||
* Control and data variables of the state machine for TinyReceiver
|
||||
*/
|
||||
struct TinyIRReceiverStruct {
|
||||
/*
|
||||
* State machine
|
||||
*/
|
||||
uint32_t LastChangeMicros; ///< microseconds of last Pin Change Interrupt.
|
||||
uint8_t IRReceiverState; ///< the state of the state machine.
|
||||
uint8_t IRRawDataBitCounter;
|
||||
/*
|
||||
* Data
|
||||
*/
|
||||
uint32_t IRRawDataMask;
|
||||
LongUnion IRRawData;
|
||||
bool IRRepeatDetected;
|
||||
};
|
||||
|
||||
/*
|
||||
* Can be used by the callback to transfer received data to main loop for further processing
|
||||
* E.g. with volatile struct TinyIRReceiverCallbackDataStruct sCallbackData;
|
||||
*/
|
||||
struct TinyIRReceiverCallbackDataStruct {
|
||||
uint16_t Address;
|
||||
uint8_t Command;
|
||||
bool isRepeat;
|
||||
bool justWritten;
|
||||
};
|
||||
|
||||
void initPCIInterruptForTinyReceiver();
|
||||
void enablePCIInterruptForTinyReceiver();
|
||||
void disablePCIInterruptForTinyReceiver();
|
||||
bool isTinyReceiverIdle();
|
||||
|
||||
/** @}*/
|
||||
|
||||
#endif // _TINY_IR_RECEIVER_H
|
||||
Reference in New Issue
Block a user