未验证 提交 fd875793 编写于 作者: R Rodrigo Garcia 提交者: GitHub

Change Propose for RMT

上级 8e939b01
...@@ -58,10 +58,59 @@ typedef struct { ...@@ -58,10 +58,59 @@ typedef struct {
} rmt_data_t; } rmt_data_t;
/*
// NEW RMT Ardunish API to replace the HAL C API
class RMT_TX: public Stream {
public:
RMT_TX(int pin, rmt_reserve_memsize_t memsize = RMT_MEM_64);
float setTick(float tick);
// Send RMT blocking/non-blocking or lopping depending of the Settings of this object
size_t write(rmt_data_t *data, size_t size);
void flush(); // wait until all data is sent - alternative to write blocking
void onTransmit(rmt_tx_data_cb_t cb, void * arg); // set async end of write callback
// can it be replaced by flush()?
void setBlocking(bool block); // Better than the one below?
size_t writeBlocking(rmt_data_t* data, size_t size);
// sets looping write mode
void setLoop(bool loop); // Better than the one below?
size_t writeLoop(rmt_data_t* data, size_t size);
bool setCarrier(bool carrier_en, bool carrier_level, uint32_t low, uint32_t high);
void detach();
}
class RMT_RX: public Stream {
public:
RMT_RX(int pin, rmt_reserve_memsize_t memsize = RMT_MEM_64);
float setTick(float tick);
//bool rmtRead(int pin, rmt_rx_data_cb_t cb, void * arg);
void onReceive(rmt_rx_data_cb_t cb, void * arg); // set async read callback
// blocking reading - should it set a timeout?
size_t read(uint32_t* data, size_t size);
size_t available();
bool setCarrier(bool carrier_en, bool carrier_level, uint32_t low, uint32_t high);
bool setFilter(bool filter_en, uint32_t filter_level);
bool setRxThreshold(uint32_t value);
void detach();
}
*/
/** /**
* Prints object information * Prints object information
* *
*/ */
//void _rmtDumpStatus(int pin);
void _rmtDumpStatus(rmt_obj_t* rmt); void _rmtDumpStatus(rmt_obj_t* rmt);
/** /**
...@@ -74,6 +123,7 @@ rmt_obj_t* rmtInit(int pin, bool tx_not_rx, rmt_reserve_memsize_t memsize); ...@@ -74,6 +123,7 @@ rmt_obj_t* rmtInit(int pin, bool tx_not_rx, rmt_reserve_memsize_t memsize);
* Sets the clock/divider of timebase the nearest tick to the supplied value in nanoseconds * Sets the clock/divider of timebase the nearest tick to the supplied value in nanoseconds
* return the real actual tick value in ns * return the real actual tick value in ns
*/ */
//float rmtSetTick(int pin, float tick);
float rmtSetTick(rmt_obj_t* rmt, float tick); float rmtSetTick(rmt_obj_t* rmt, float tick);
/** /**
...@@ -81,6 +131,7 @@ float rmtSetTick(rmt_obj_t* rmt, float tick); ...@@ -81,6 +131,7 @@ float rmtSetTick(rmt_obj_t* rmt, float tick);
* (more data being send while updating buffers in interrupts) * (more data being send while updating buffers in interrupts)
* Non-Blocking mode - returns right after executing * Non-Blocking mode - returns right after executing
*/ */
//bool rmtWrite(int pin, rmt_data_t* data, size_t size);
bool rmtWrite(rmt_obj_t* rmt, rmt_data_t* data, size_t size); bool rmtWrite(rmt_obj_t* rmt, rmt_data_t* data, size_t size);
/** /**
...@@ -88,18 +139,21 @@ bool rmtWrite(rmt_obj_t* rmt, rmt_data_t* data, size_t size); ...@@ -88,18 +139,21 @@ bool rmtWrite(rmt_obj_t* rmt, rmt_data_t* data, size_t size);
* (more data being send while updating buffers in interrupts) * (more data being send while updating buffers in interrupts)
* Blocking mode - only returns when data has been sent * Blocking mode - only returns when data has been sent
*/ */
//bool rmtWriteBlocking(int pin, rmt_data_t* data, size_t size);
bool rmtWriteBlocking(rmt_obj_t* rmt, rmt_data_t* data, size_t size); bool rmtWriteBlocking(rmt_obj_t* rmt, rmt_data_t* data, size_t size);
/** /**
* Loop data up to the reserved memsize continuously * Loop data up to the reserved memsize continuously
* *
*/ */
//bool rmtLoop(int pin, rmt_data_t* data, size_t size);
bool rmtLoop(rmt_obj_t* rmt, rmt_data_t* data, size_t size); bool rmtLoop(rmt_obj_t* rmt, rmt_data_t* data, size_t size);
/** /**
* Initiates async receive, event flag indicates data received * Initiates async receive, event flag indicates data received
* *
*/ */
//bool rmtReadAsync(int pin, rmt_data_t* data, size_t size, void* eventFlag, bool waitForData, uint32_t timeout);
bool rmtReadAsync(rmt_obj_t* rmt, rmt_data_t* data, size_t size, void* eventFlag, bool waitForData, uint32_t timeout); bool rmtReadAsync(rmt_obj_t* rmt, rmt_data_t* data, size_t size, void* eventFlag, bool waitForData, uint32_t timeout);
/** /**
...@@ -107,12 +161,14 @@ bool rmtReadAsync(rmt_obj_t* rmt, rmt_data_t* data, size_t size, void* eventFlag ...@@ -107,12 +161,14 @@ bool rmtReadAsync(rmt_obj_t* rmt, rmt_data_t* data, size_t size, void* eventFlag
* and callback with data from ISR * and callback with data from ISR
* *
*/ */
//bool rmtRead(int pin, rmt_rx_data_cb_t cb, void * arg);
bool rmtRead(rmt_obj_t* rmt, rmt_rx_data_cb_t cb, void * arg); bool rmtRead(rmt_obj_t* rmt, rmt_rx_data_cb_t cb, void * arg);
/*** /***
* Ends async receive started with rmtRead(); but does not * Ends async receive started with rmtRead(); but does not
* rmtDeInit(). * rmtDeInit().
*/ */
//bool rmtEnd(int pin);
bool rmtEnd(rmt_obj_t* rmt); bool rmtEnd(rmt_obj_t* rmt);
/* Additional interface */ /* Additional interface */
...@@ -121,38 +177,45 @@ bool rmtEnd(rmt_obj_t* rmt); ...@@ -121,38 +177,45 @@ bool rmtEnd(rmt_obj_t* rmt);
* Start reception * Start reception
* *
*/ */
//bool rmtBeginReceive(int pin);
bool rmtBeginReceive(rmt_obj_t* rmt); bool rmtBeginReceive(rmt_obj_t* rmt);
/** /**
* Checks if reception completes * Checks if reception completes
* *
*/ */
//bool rmtReceiveCompleted(int pin);
bool rmtReceiveCompleted(rmt_obj_t* rmt); bool rmtReceiveCompleted(rmt_obj_t* rmt);
/** /**
* Reads the data for particular channel * Reads the data for particular channel
* *
*/ */
//bool rmtReadData(int pin, uint32_t* data, size_t size);
bool rmtReadData(rmt_obj_t* rmt, uint32_t* data, size_t size); bool rmtReadData(rmt_obj_t* rmt, uint32_t* data, size_t size);
/** /**
* Setting threshold for Rx completed * Setting threshold for Rx completed
*/ */
//bool rmtSetRxThreshold(int pin, uint32_t value);
bool rmtSetRxThreshold(rmt_obj_t* rmt, uint32_t value); bool rmtSetRxThreshold(rmt_obj_t* rmt, uint32_t value);
/** /**
* Setting carrier * Setting carrier
*/ */
//bool rmtSetCarrier(int pin, bool carrier_en, bool carrier_level, uint32_t low, uint32_t high);
bool rmtSetCarrier(rmt_obj_t* rmt, bool carrier_en, bool carrier_level, uint32_t low, uint32_t high); bool rmtSetCarrier(rmt_obj_t* rmt, bool carrier_en, bool carrier_level, uint32_t low, uint32_t high);
/** /**
* Setting input filter * Setting input filter
*/ */
//bool rmtSetFilter(int pin, bool filter_en, uint32_t filter_level);
bool rmtSetFilter(rmt_obj_t* rmt, bool filter_en, uint32_t filter_level); bool rmtSetFilter(rmt_obj_t* rmt, bool filter_en, uint32_t filter_level);
/** /**
* Deinitialize the driver * Deinitialize the driver
*/ */
//bool rmtDeinit(int pin);
bool rmtDeinit(rmt_obj_t *rmt); bool rmtDeinit(rmt_obj_t *rmt);
// TODO: // TODO:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册