Moved remotely
git-svn-id: file:///srv/dev-disk-by-uuid-17e88007-4d0c-45e0-8757-cacfcc458630/repositories/svn/Diplomarbeit@110 9fe90eed-be63-e94b-8204-d34ff4c2ff93
This commit is contained in:
@@ -0,0 +1,499 @@
|
||||
/* ---------------------------------------------------------------------------
|
||||
* test_digital.c (c) 2008 Micro-key bv
|
||||
* ---------------------------------------------------------------------------
|
||||
* Micro-key bv
|
||||
* Industrieweg 28, 9804 TG Noordhorn
|
||||
* Postbus 92, 9800 AB Zuidhorn
|
||||
* The Netherlands
|
||||
* Tel: +31 594 503020
|
||||
* Fax: +31 594 505825
|
||||
* Email: support@microkey.nl
|
||||
* Web: www.microkey.nl
|
||||
* ---------------------------------------------------------------------------
|
||||
* Description:
|
||||
* ---------------------------------------------------------------------------
|
||||
* Version(s): 0.1, Dez 15, 2008, MMi
|
||||
* Creation.
|
||||
* ---------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
* System include files
|
||||
* ---------------------------------------------------------------------------
|
||||
*/
|
||||
#include "LPC23xx.h"
|
||||
#include "types.h"
|
||||
|
||||
/* FreeRTOS includes */
|
||||
#include "FreeRTOS.h"
|
||||
#include "Task.h"
|
||||
#include "semphr.h"
|
||||
/* ---------------------------------------------------------------------------
|
||||
* Application include files
|
||||
* ---------------------------------------------------------------------------
|
||||
*/
|
||||
#include "test_digital.h"
|
||||
#include "remote_digital.h"
|
||||
|
||||
#include "dio.h"
|
||||
#include "remote_tests.h"
|
||||
#include "SerOut.h"
|
||||
#include "protocolfunctions.h"
|
||||
#include "BusProtocol.h"
|
||||
#include "ledfunctions.h"
|
||||
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
* Local constant and macro definitions
|
||||
* ---------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
* Global variable definitions
|
||||
* ---------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
* Local variable definitions
|
||||
* ---------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
* Local function definitions
|
||||
* ---------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
BOOLEAN remoteDigitalLinetestMBExecute (void)
|
||||
{
|
||||
BOOLEAN returnValue;
|
||||
BOOLEAN remoteDigitalOutput;
|
||||
BOOLEAN remoteDigitalInput;
|
||||
|
||||
|
||||
remoteDigitalOutput = remoteDigitalOutputTest_MB();
|
||||
sendString (SerOutPort, TRUE, resultMessage,
|
||||
"remote digital_mb output test: ", f_tab, BoolRestoStr(remoteDigitalOutput));
|
||||
remoteDigitalInput = remoteDigitalInputTest_MB();
|
||||
sendString (SerOutPort, TRUE, resultMessage,
|
||||
"remote digital_mb input test: ", f_tab, BoolRestoStr(remoteDigitalInput));
|
||||
|
||||
if ((remoteDigitalOutput == TRUE) && (remoteDigitalInput == TRUE))
|
||||
{
|
||||
returnValue = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
returnValue = FALSE;
|
||||
}
|
||||
|
||||
return (returnValue);
|
||||
}
|
||||
|
||||
BOOLEAN remoteDigitalLinetestEBExecute (void)
|
||||
{
|
||||
// \MARK NEW PINSETTINGS FOR TESTER (2)
|
||||
#if (PINSET_TESTER == 2)
|
||||
BOOLEAN returnValue;
|
||||
BOOLEAN remoteDigitalOutput;
|
||||
BOOLEAN remoteDigitalInput;
|
||||
|
||||
remoteDigitalOutput = remoteDigitalOutputTest_EB();
|
||||
sendString (SerOutPort, TRUE, resultMessage,
|
||||
"remote digital_eb output test: ", f_tab, BoolRestoStr(remoteDigitalOutput));
|
||||
|
||||
remoteDigitalInput = remoteDigitalInputTest_EB();
|
||||
sendString (SerOutPort, TRUE, resultMessage,
|
||||
"remote digital_eb input test: ", f_tab, BoolRestoStr(remoteDigitalInput));
|
||||
|
||||
if ((remoteDigitalOutput == TRUE) && (remoteDigitalInput == TRUE))
|
||||
{
|
||||
returnValue = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
returnValue = FALSE;
|
||||
}
|
||||
|
||||
return (returnValue);
|
||||
#else
|
||||
sendString (SerOutPort, TRUE, importantMessage,
|
||||
"Extension Board test not available on this device", Dummy, Dummy);
|
||||
|
||||
return (FALSE);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
BOOLEAN remoteDigitalOutputTest_MB (void)
|
||||
{
|
||||
UINT32 channelcnt;
|
||||
UINT32 loopcnt;
|
||||
|
||||
BOOLEAN returnResult = TRUE;
|
||||
BOOLEAN Low_Test = TRUE;
|
||||
BOOLEAN High_Test = TRUE;
|
||||
BOOLEAN AllOther_Test = TRUE;
|
||||
|
||||
/* Reset all remote digital outputs to LOW/OFF */
|
||||
remoteDioWriteAll(remoteDeviceNumber, digital_mb, FALSE);
|
||||
vTaskDelay (200);
|
||||
|
||||
for (channelcnt = 0; channelcnt < NUMBER_OF_DO_MB; channelcnt++)
|
||||
{
|
||||
|
||||
/* Read remote digital channel value for LOW test */
|
||||
if (dioRead(thisDeviceNumber, channelcnt) == FALSE)
|
||||
{
|
||||
/* Read back a LOW Value, which is correct - LOW test passed */
|
||||
Low_Test = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* read back a HIGH Value, which is incorrect - LOW test failed */
|
||||
Low_Test = FALSE;
|
||||
}
|
||||
|
||||
/* Drive testchannel to HIGH Output value */
|
||||
remoteDioWrite(remoteDeviceNumber, channelcnt, TRUE);
|
||||
vTaskDelay (200); /* Assure command was executed */
|
||||
|
||||
if (dioRead(thisDeviceNumber, channelcnt) == TRUE)
|
||||
{
|
||||
/* Read back a HIGH Value, which is correct - HIGH test passed */
|
||||
High_Test = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* read back a LOW Value, which is incorrect - HIGH test failed */
|
||||
High_Test = FALSE;
|
||||
}
|
||||
|
||||
vTaskDelay (200);
|
||||
/* Check all other channels for remaining at LOW */
|
||||
for (loopcnt = 0; loopcnt < NUMBER_OF_DO_MB; loopcnt++)
|
||||
{
|
||||
if (loopcnt == channelcnt)
|
||||
{
|
||||
/* Skip test channel */
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Check actual channel to remain LOW */
|
||||
if (dioRead(thisDeviceNumber, loopcnt) == TRUE)
|
||||
{
|
||||
/* Channel should remain LOW - AllOther test failed */
|
||||
AllOther_Test = FALSE;
|
||||
break; /* Skip rest of loop */
|
||||
}
|
||||
else
|
||||
{
|
||||
AllOther_Test = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
remoteDioWrite(remoteDeviceNumber, channelcnt, FALSE);
|
||||
|
||||
/* Message out Test Results */
|
||||
sendString (SerOutPort, TRUE, testMessage,
|
||||
"\tLinetest for Digital Input ", ItoDStr(channelcnt), ": ");
|
||||
sendString (SerOutPort, FALSE, testMessage,
|
||||
" ", Dummy, BoolRestoStr (Low_Test));
|
||||
sendString (SerOutPort, FALSE, testMessage,
|
||||
" ", Dummy, BoolRestoStr (AllOther_Test));
|
||||
sendString (SerOutPort, FALSE, testMessage,
|
||||
" ", Dummy, BoolRestoStr (High_Test));
|
||||
vTaskDelay (50);
|
||||
|
||||
if ((Low_Test == FALSE) || (High_Test == FALSE) || (AllOther_Test == FALSE))
|
||||
{
|
||||
returnResult = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
return (returnResult);
|
||||
}
|
||||
|
||||
BOOLEAN remoteDigitalInputTest_MB (void)
|
||||
{
|
||||
UINT32 channelcnt;
|
||||
UINT32 loopcnt;
|
||||
|
||||
BOOLEAN returnResult = TRUE;
|
||||
BOOLEAN Low_Test = TRUE;
|
||||
BOOLEAN High_Test = TRUE;
|
||||
BOOLEAN AllOther_Test = TRUE;
|
||||
|
||||
dioClean(); /* Clean local digital outputs */
|
||||
vTaskDelay (500);
|
||||
|
||||
for (channelcnt = 0; channelcnt < NUMBER_OF_DI_MB; channelcnt++)
|
||||
{
|
||||
if (remoteDioRead(remoteDeviceNumber, channelcnt) == FALSE)
|
||||
{
|
||||
/* Read back a LOW Value, which is correct - LOW test passed */
|
||||
Low_Test = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* read back a HIGH Value, which is incorrect - LOW test failed */
|
||||
Low_Test = FALSE;
|
||||
}
|
||||
|
||||
vTaskDelay (200);
|
||||
dioWrite(thisDeviceNumber, channelcnt, TRUE);
|
||||
vTaskDelay(200);
|
||||
|
||||
if (remoteDioRead(remoteDeviceNumber, channelcnt) == TRUE)
|
||||
{
|
||||
/* Read back a HIGH Value, which is correct - HIGH test passed */
|
||||
vTaskDelay(500);
|
||||
High_Test = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* read back a LOW Value, which is incorrect - HIGH test failed */
|
||||
vTaskDelay(500);
|
||||
High_Test = FALSE;
|
||||
}
|
||||
|
||||
remoteDioReadAll(remoteDeviceNumber, digital_mb);
|
||||
vTaskDelay (200);
|
||||
|
||||
for (loopcnt = 0; loopcnt < NUMBER_OF_DI_MB; loopcnt++)
|
||||
{
|
||||
if (loopcnt == channelcnt)
|
||||
{
|
||||
/* Skip test channel */
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Check actual channel to remain LOW */
|
||||
if (remoteDigitalInputs[loopcnt] == TRUE)
|
||||
{
|
||||
/* Channel should remain LOW - AllOther test failed */
|
||||
AllOther_Test = FALSE;
|
||||
break; /* Skip rest of loop */
|
||||
}
|
||||
else
|
||||
{
|
||||
AllOther_Test = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Return to LOW channel value */
|
||||
dioWrite (thisDeviceNumber, channelcnt, FALSE);
|
||||
|
||||
/* Message out Test Results */
|
||||
sendString (SerOutPort, TRUE, testMessage,
|
||||
"\tLinetest for Digital Input ", ItoDStr(channelcnt), ": ");
|
||||
sendString (SerOutPort, FALSE, testMessage,
|
||||
" ", Dummy, BoolRestoStr (Low_Test));
|
||||
sendString (SerOutPort, FALSE, testMessage,
|
||||
" ", Dummy, BoolRestoStr (AllOther_Test));
|
||||
sendString (SerOutPort, FALSE, testMessage,
|
||||
" ", Dummy, BoolRestoStr (High_Test));
|
||||
vTaskDelay (50);
|
||||
|
||||
if ((Low_Test == FALSE) || (High_Test == FALSE) || (AllOther_Test == FALSE))
|
||||
{
|
||||
returnResult = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
return (returnResult);
|
||||
}
|
||||
|
||||
|
||||
BOOLEAN remoteDigitalOutputTest_EB (void)
|
||||
{
|
||||
UINT32 channelcnt;
|
||||
UINT32 loopcnt;
|
||||
|
||||
BOOLEAN returnResult = TRUE;
|
||||
BOOLEAN Low_Test = TRUE;
|
||||
BOOLEAN High_Test = TRUE;
|
||||
BOOLEAN AllOther_Test = TRUE;
|
||||
|
||||
// \MARK NEW PINSETTINGS FOR TESTER (2)
|
||||
#if (PINSET_TESTER == 2)
|
||||
dio_inMuxEn (TRUE); /* Switch dio to Extension Board*/
|
||||
#endif
|
||||
|
||||
/* Reset all remote digital outputs to LOW/OFF */
|
||||
remoteDioWriteAll(remoteDeviceNumber, digital_eb, FALSE);
|
||||
vTaskDelay (200);
|
||||
|
||||
for (channelcnt = NUMBER_OF_DO_MB; channelcnt < NUMBER_OF_TOTAL_DO; channelcnt++)
|
||||
{
|
||||
if (dioRead(thisDeviceNumber, (channelcnt - NUMBER_OF_DO_MB)) == FALSE)
|
||||
{
|
||||
/* Read back a LOW Value, which is correct - LOW test passed */
|
||||
Low_Test = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* read back a HIGH Value, which is incorrect - LOW test failed */
|
||||
Low_Test = FALSE;
|
||||
}
|
||||
|
||||
/* Drive testchannel to HIGH Output value */
|
||||
remoteDioWrite(remoteDeviceNumber, channelcnt, TRUE);
|
||||
vTaskDelay (200); /* Assure command was executed */
|
||||
|
||||
if (dioRead(remoteDeviceNumber, (channelcnt - NUMBER_OF_DO_MB)) == TRUE)
|
||||
{
|
||||
/* Read back a HIGH Value, which is correct - HIGH test passed */
|
||||
High_Test = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* read back a LOW Value, which is incorrect - HIGH test failed */
|
||||
High_Test = FALSE;
|
||||
}
|
||||
|
||||
vTaskDelay (200);
|
||||
for (loopcnt = 0; loopcnt < NUMBER_OF_DO_EB; loopcnt++)
|
||||
{
|
||||
if (loopcnt == channelcnt)
|
||||
{
|
||||
/* Skip test channel */
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Check actual channel to remain LOW */
|
||||
if (dioRead(thisDeviceNumber, loopcnt) == TRUE)
|
||||
{
|
||||
/* Channel should remain LOW - AllOther test failed */
|
||||
AllOther_Test = FALSE;
|
||||
break; /* Skip rest of loop */
|
||||
}
|
||||
else
|
||||
{
|
||||
AllOther_Test = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Message out Test Results */
|
||||
sendString (SerOutPort, TRUE, testMessage,
|
||||
"\tLinetest for Digital Input ", ItoDStr(channelcnt), ": ");
|
||||
sendString (SerOutPort, FALSE, testMessage,
|
||||
" ", Dummy, BoolRestoStr (Low_Test));
|
||||
sendString (SerOutPort, FALSE, testMessage,
|
||||
" ", Dummy, BoolRestoStr (AllOther_Test));
|
||||
sendString (SerOutPort, FALSE, testMessage,
|
||||
" ", Dummy, BoolRestoStr (High_Test));
|
||||
vTaskDelay (50);
|
||||
|
||||
if ((Low_Test == FALSE) || (High_Test == FALSE) || (AllOther_Test == FALSE))
|
||||
{
|
||||
returnResult = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
// \MARK NEW PINSETTINGS FOR TESTER (2)
|
||||
#if (PINSET_TESTER == 2)
|
||||
dio_inMuxEn (FALSE); /* Switch dio back to main Board*/
|
||||
#endif
|
||||
|
||||
return (returnResult);
|
||||
}
|
||||
|
||||
|
||||
BOOLEAN remoteDigitalInputTest_EB (void)
|
||||
{
|
||||
UINT32 channelcnt;
|
||||
UINT32 loopcnt;
|
||||
|
||||
BOOLEAN returnResult = TRUE;
|
||||
BOOLEAN Low_Test = TRUE;
|
||||
BOOLEAN High_Test = TRUE;
|
||||
BOOLEAN AllOther_Test = TRUE;
|
||||
|
||||
// \MARK NEW PINSETTINGS FOR TESTER (2)
|
||||
#if (PINSET_TESTER == 2)
|
||||
dio_outMuxEn (TRUE); /* Switch dio to Extension Board*/
|
||||
#endif
|
||||
|
||||
dioClean(); /* Clean local digital outputs */
|
||||
vTaskDelay (500);
|
||||
|
||||
for (channelcnt = 0; channelcnt < NUMBER_OF_DI_EB; channelcnt++)
|
||||
{
|
||||
if (remoteDioRead(remoteDeviceNumber, (channelcnt + NUMBER_OF_DI_MB)) == FALSE)
|
||||
{
|
||||
/* Read back a LOW Value, which is correct - LOW test passed */
|
||||
Low_Test = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* read back a HIGH Value, which is incorrect - LOW test failed */
|
||||
Low_Test = FALSE;
|
||||
}
|
||||
|
||||
vTaskDelay (200);
|
||||
dioWrite(thisDeviceNumber, channelcnt, TRUE);
|
||||
|
||||
if (remoteDioRead(remoteDeviceNumber, (channelcnt + NUMBER_OF_DI_MB)) == TRUE)
|
||||
{
|
||||
/* Read back a HIGH Value, which is correct - HIGH test passed */
|
||||
High_Test = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* read back a LOW Value, which is incorrect - HIGH test failed */
|
||||
High_Test = FALSE;
|
||||
}
|
||||
|
||||
remoteDioReadAll(remoteDeviceNumber, digital_eb);
|
||||
vTaskDelay (200);
|
||||
|
||||
for (loopcnt = 0; loopcnt < NUMBER_OF_DI_EB; loopcnt++)
|
||||
{
|
||||
if (loopcnt == channelcnt)
|
||||
{
|
||||
/* Skip test channel */
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Check actual channel to remain LOW */
|
||||
if (remoteDigitalInputs[(loopcnt + NUMBER_OF_DI_MB)] == TRUE)
|
||||
{
|
||||
/* Channel should remain LOW - AllOther test failed */
|
||||
AllOther_Test = FALSE;
|
||||
break; /* Skip rest of loop */
|
||||
}
|
||||
else
|
||||
{
|
||||
AllOther_Test = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Return to LOW channel value */
|
||||
dioWrite (thisDeviceNumber, channelcnt, FALSE);
|
||||
|
||||
/* Message out Test Results */
|
||||
sendString (SerOutPort, TRUE, testMessage,
|
||||
"\tLinetest for Digital Input ", ItoDStr(channelcnt), ": ");
|
||||
sendString (SerOutPort, FALSE, testMessage,
|
||||
" ", Dummy, BoolRestoStr (Low_Test));
|
||||
sendString (SerOutPort, FALSE, testMessage,
|
||||
" ", Dummy, BoolRestoStr (AllOther_Test));
|
||||
sendString (SerOutPort, FALSE, testMessage,
|
||||
" ", Dummy, BoolRestoStr (High_Test));
|
||||
vTaskDelay (50);
|
||||
|
||||
if ((Low_Test == FALSE) || (High_Test == FALSE) || (AllOther_Test == FALSE))
|
||||
{
|
||||
returnResult = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
// \MARK NEW PINSETTINGS FOR TESTER (2)
|
||||
#if (PINSET_TESTER == 2)
|
||||
dio_outMuxEn (FALSE); /* Switch dio back to main Board*/
|
||||
#endif
|
||||
|
||||
return (returnResult);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user