1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-24 16:55:36 +03:00

Merge pull request #6810 from azolyoung/fix_rcsplit_t_control_bug

fix rcdevice can't work
This commit is contained in:
Michael Keller 2018-10-06 15:38:20 +13:00 committed by GitHub
commit 811364c2ec
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 161 additions and 39 deletions

View file

@ -76,6 +76,7 @@ extern "C" {
int minTimeout = 180;
void rcdeviceSend5KeyOSDCableSimualtionEvent(rcdeviceCamSimulationKeyEvent_e key);
rcdeviceResponseParseContext_t* rcdeviceRespCtxQueueShift(rcdeviceWaitingResponseQueue *queue);
}
#define MAX_RESPONSES_COUNT 10
@ -97,6 +98,13 @@ typedef struct testData_s {
} testData_t;
static testData_t testData;
extern rcdeviceWaitingResponseQueue watingResponseQueue;
static void resetRCDeviceStatus()
{
isButtonPressed = false;
rcdeviceInMenu = false;
}
static void clearResponseBuff()
{
@ -104,6 +112,10 @@ static void clearResponseBuff()
testData.responseBufCount = 0;
memset(testData.responseBufsLen, 0, MAX_RESPONSES_COUNT);
memset(testData.responesBufs, 0, MAX_RESPONSES_COUNT * 60);
while (rcdeviceRespCtxQueueShift(&watingResponseQueue)) {
}
}
static void addResponseData(uint8_t *data, uint8_t dataLen, bool withDataForFlushSerial)
@ -117,6 +129,9 @@ static void addResponseData(uint8_t *data, uint8_t dataLen, bool withDataForFlus
TEST(RCDeviceTest, TestRCSplitInitWithoutPortConfigurated)
{
runcamDevice_t device;
resetRCDeviceStatus();
watingResponseQueue.headPos = 0;
watingResponseQueue.tailPos = 0;
watingResponseQueue.itemCount = 0;
@ -129,6 +144,8 @@ TEST(RCDeviceTest, TestRCSplitInitWithoutOpenPortConfigurated)
{
runcamDevice_t device;
resetRCDeviceStatus();
watingResponseQueue.headPos = 0;
watingResponseQueue.tailPos = 0;
watingResponseQueue.itemCount = 0;
@ -144,6 +161,8 @@ TEST(RCDeviceTest, TestInitDevice)
{
runcamDevice_t device;
resetRCDeviceStatus();
// test correct response
watingResponseQueue.headPos = 0;
watingResponseQueue.tailPos = 0;
@ -169,6 +188,8 @@ TEST(RCDeviceTest, TestInitDeviceWithInvalidResponse)
{
runcamDevice_t device;
resetRCDeviceStatus();
// test correct response data with incorrect len
watingResponseQueue.headPos = 0;
watingResponseQueue.tailPos = 0;
@ -235,6 +256,8 @@ TEST(RCDeviceTest, TestInitDeviceWithInvalidResponse)
TEST(RCDeviceTest, TestWifiModeChangeWithDeviceUnready)
{
resetRCDeviceStatus();
// test correct response
watingResponseQueue.headPos = 0;
watingResponseQueue.tailPos = 0;
@ -295,6 +318,8 @@ TEST(RCDeviceTest, TestWifiModeChangeWithDeviceUnready)
TEST(RCDeviceTest, TestWifiModeChangeWithDeviceReady)
{
resetRCDeviceStatus();
// test correct response
memset(&testData, 0, sizeof(testData));
testData.isRunCamSplitOpenPortSupported = true;
@ -355,6 +380,8 @@ TEST(RCDeviceTest, TestWifiModeChangeWithDeviceReady)
TEST(RCDeviceTest, TestWifiModeChangeCombine)
{
resetRCDeviceStatus();
memset(&testData, 0, sizeof(testData));
testData.isRunCamSplitOpenPortSupported = true;
testData.isRunCamSplitPortConfigurated = true;
@ -437,6 +464,8 @@ TEST(RCDeviceTest, TestWifiModeChangeCombine)
TEST(RCDeviceTest, Test5KeyOSDCableSimulationProtocol)
{
resetRCDeviceStatus();
memset(&testData, 0, sizeof(testData));
testData.isRunCamSplitOpenPortSupported = true;
testData.isRunCamSplitPortConfigurated = true;
@ -627,12 +656,14 @@ TEST(RCDeviceTest, Test5KeyOSDCableSimulationProtocol)
TEST(RCDeviceTest, Test5KeyOSDCableSimulationWithout5KeyFeatureSupport)
{
resetRCDeviceStatus();
// test simulation without device init
rcData[THROTTLE] = FIVE_KEY_JOYSTICK_MID; // THROTTLE Mid
rcData[ROLL] = FIVE_KEY_JOYSTICK_MID; // ROLL Mid
rcData[PITCH] = FIVE_KEY_JOYSTICK_MID; // PITCH Mid
rcData[YAW] = FIVE_KEY_JOYSTICK_MAX; // Yaw High
rcdeviceUpdate(0);
rcdeviceUpdate(millis() * 1000);
EXPECT_EQ(false, rcdeviceInMenu);
// init device that have not 5 key OSD cable simulation feature
@ -656,7 +687,7 @@ TEST(RCDeviceTest, Test5KeyOSDCableSimulationWithout5KeyFeatureSupport)
// open connection, rcdeviceInMenu will be false if the codes is right
uint8_t responseDataOfOpenConnection[] = { 0xCC, 0x11, 0xe7 };
addResponseData(responseDataOfOpenConnection, sizeof(responseDataOfOpenConnection), false);
rcdeviceUpdate(0);
rcdeviceUpdate(millis() * 1000);
EXPECT_EQ(false, rcdeviceInMenu);
clearResponseBuff();
}