Added Software projects
git-svn-id: file:///srv/dev-disk-by-uuid-17e88007-4d0c-45e0-8757-cacfcc458630/repositories/svn/Diplomarbeit@55 9fe90eed-be63-e94b-8204-d34ff4c2ff93
This commit is contained in:
@@ -0,0 +1,331 @@
|
||||
/* ---------------------------------------------------------------------------
|
||||
* remote_tests.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: Function to call single tests on remote system
|
||||
*
|
||||
* NOTE: allMemoryUseSameLED is defined in taskfunctions.h
|
||||
*
|
||||
* ---------------------------------------------------------------------------
|
||||
* Version(s): 0.1, Aug 29, 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 "remote_tests.h"
|
||||
#include "SerOut.h"
|
||||
#include "dio.h"
|
||||
#include "ledfunctions.h"
|
||||
#include "protocolfunctions.h"
|
||||
#include "taskfunctions.h"
|
||||
#include "BusProtocol.h"
|
||||
|
||||
/* Test includes */
|
||||
#include "testLED.h"
|
||||
#include "testdio.h"
|
||||
#include "testaio.h"
|
||||
#include "testBUS.h"
|
||||
#include "testeeprom.h"
|
||||
#include "testMMC.h"
|
||||
#include "testpower.h"
|
||||
#include "testrtc.h"
|
||||
|
||||
#include "remote_analogue.h"
|
||||
#include "remote_digital.h"
|
||||
#include "remote_relay.h"
|
||||
/* ---------------------------------------------------------------------------
|
||||
* Local constant and macro definitions
|
||||
* ---------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
* Global variable definitions
|
||||
* ---------------------------------------------------------------------------
|
||||
*/
|
||||
extern BOOLEAN auto_testResult;
|
||||
extern BOOLEAN GotoNewLine;
|
||||
extern BOOLEAN block_SpinningWheel;
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
* Local variable definitions
|
||||
* ---------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
* Local function definitions
|
||||
* ---------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
void r_TestInit (void)
|
||||
{
|
||||
remoteDioInit();
|
||||
vTaskDelay (200);
|
||||
remoteAioInit();
|
||||
vTaskDelay (200);
|
||||
remoteRelayInit();
|
||||
vTaskDelay (200);
|
||||
}
|
||||
|
||||
|
||||
void r_BatteryTest (BOOLEAN * batterytest)
|
||||
{
|
||||
/* Test for Battery and batterysupplied Memory */
|
||||
sendString(SerOutPort, TRUE, headerMessage,
|
||||
StartMessage, f_lines, "Battery Test");
|
||||
bpSendCallRpc(handleBus1, 2, 17, 0, NULL); /* Write on Battery Memory */
|
||||
sendString(SerOutPort, TRUE, noteMessage,
|
||||
NewLine, "\t\tSwitch SLAVE OFF for 5 Seconds", Dummy);
|
||||
if (xSemaphoreTake(slaveRestartSemaphore, 60000) == pdPASS)
|
||||
{ /* Wait for slave Restart */
|
||||
bpSendCallRpc(handleBus1, 2, 18, 0, NULL); /* Read from Memory */
|
||||
xSemaphoreTake(generalSemaphore, 3000);
|
||||
}
|
||||
else
|
||||
{
|
||||
auto_testResult = FALSE;
|
||||
xSemaphoreGive (slaveRestartSemaphore);
|
||||
}
|
||||
|
||||
*batterytest = auto_testResult;
|
||||
#if (allMemoryUseSameLED == 1)
|
||||
postpareTest(*batterytest, &d_batteryled, BATTERYLED, (void *)dioToggle,
|
||||
(pUINT8) "batteryerror", &batteryled);
|
||||
#endif
|
||||
bpSendCallRpc(handleBus1, 2, 4, 0, NULL); /* Call dioClean() */
|
||||
sendString (SerOutPort, TRUE, resultMessage,
|
||||
"n\rBATTERY Test Result: ", s_lines, BoolRestoStr (*batterytest));
|
||||
|
||||
}
|
||||
|
||||
|
||||
void r_LEDTest (BOOLEAN * ledtest)
|
||||
{
|
||||
/* Local Variable declaration */
|
||||
UINT8 buffer = 0;
|
||||
UINT8 captureDio;
|
||||
UINT8 dioAllOn = 0xFF;
|
||||
BOOLEAN receive = FALSE;
|
||||
|
||||
/* Test for all accessable LEDs */
|
||||
sendString(SerOutPort, TRUE, headerMessage,
|
||||
StartMessage, f_lines, "LED TEST");
|
||||
captureDio = dioCapture();
|
||||
diotaskssuspend();
|
||||
dioResume (dioAllOn);
|
||||
bpSendCallRpc(handleBus1, 2, 21, 0, NULL); /* Call ledTest() */
|
||||
sendString (SerOutPort, TRUE, noteMessage,
|
||||
"\n\tAre all LEDs turned on? ",
|
||||
"\n\r\tPRESS y (YES) oder n (NO): ",
|
||||
NewLine);
|
||||
|
||||
do /* do-while loop for String input */
|
||||
{
|
||||
vTaskDelay (10);
|
||||
buffer = 0;
|
||||
receive = serGet(SerOutPort, &buffer);
|
||||
|
||||
} while ((buffer != 121) && (buffer != 110));
|
||||
|
||||
if (buffer == 121) /* 121 = y (ScanCode) */
|
||||
{
|
||||
*ledtest = TRUE;
|
||||
}
|
||||
else if (buffer == 110) /* 110 = n (ScanCode) */
|
||||
{
|
||||
*ledtest = FALSE;
|
||||
}
|
||||
xSemaphoreTake(generalSemaphore, 5000);
|
||||
dioResume(captureDio);
|
||||
diotasksresume();
|
||||
bpSendCallRpc(handleBus1, 2, 32, 0, NULL); /* Postpare Test on Slave */
|
||||
postpareTest(*ledtest, &d_ledtestled, LEDTESTLED, (void *)dioToggle,
|
||||
(pUINT8) "LEDerror", &ledtestled);
|
||||
bpSendCallRpc(handleBus1, 2, 4, 0, NULL); /* Call dioClean() */
|
||||
sendString (SerOutPort, GotoNewLine, resultMessage,
|
||||
"n\rLED Test Result: ", s_lines, BoolRestoStr (*ledtest));
|
||||
}
|
||||
|
||||
|
||||
void r_EEPROMTest (BOOLEAN * eepromtest)
|
||||
{
|
||||
/* Test for EEPROM Memory */
|
||||
sendString(SerOutPort, TRUE, headerMessage,
|
||||
StartMessage, f_lines, "EEPROM");
|
||||
sendString (SerOutPort, FALSE, importantMessage,
|
||||
"\t", Dummy, Dummy);
|
||||
|
||||
block_SpinningWheel = FALSE;
|
||||
bpSendCallRpc(handleBus1, 2, 22, 0, NULL); /* Call eepromTest() */
|
||||
|
||||
if (xSemaphoreTake(generalSemaphore, 5000) != pdPASS)
|
||||
{
|
||||
block_SpinningWheel = TRUE;
|
||||
sendString (SerOutPort, TRUE, importantMessage,
|
||||
"\tTimeout occoured!", Dummy, Dummy);
|
||||
auto_testResult = FALSE;
|
||||
xSemaphoreGive (generalSemaphore);
|
||||
}
|
||||
block_SpinningWheel = TRUE;
|
||||
*eepromtest = auto_testResult;
|
||||
#if (allMemoryUseSameLED == 0)
|
||||
postpareTest(*eepromtest, &d_eepromled, EEPROMLED, (void *)dioToggle,
|
||||
(pUINT8) "EEPROMerror", eepromled);
|
||||
#else
|
||||
postpareTest(*eepromtest, &d_memoryled, MEMORYLED, (void *)dioToggle,
|
||||
(pUINT8) "memoryerror", &memoryled);
|
||||
#endif
|
||||
bpSendCallRpc(handleBus1, 2, 4, 0, NULL); /* Call dioClean() */
|
||||
sendString(SerOutPort, GotoNewLine, resultMessage,
|
||||
"\n\rEEPROM Test Result:",
|
||||
s_lines, BoolRestoStr(*eepromtest));
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
void r_MMCTest(BOOLEAN * mmctest)
|
||||
{
|
||||
/* Test for Multimedia Card */
|
||||
sendString(SerOutPort, TRUE, headerMessage,
|
||||
StartMessage, f_lines, "MMC");
|
||||
sendString (SerOutPort, FALSE, importantMessage,
|
||||
"\t", Dummy, Dummy);
|
||||
|
||||
block_SpinningWheel = FALSE;
|
||||
bpSendCallRpc(handleBus1, 2, 27, 0, NULL); /* Call MMCTest() */
|
||||
|
||||
if (xSemaphoreTake(generalSemaphore, 5000) != pdPASS)
|
||||
{
|
||||
block_SpinningWheel = TRUE;
|
||||
sendString(SerOutPort, TRUE, importantMessage, "\tTimeout occoured!",
|
||||
Dummy, Dummy);
|
||||
auto_testResult = FALSE;
|
||||
xSemaphoreGive (generalSemaphore);
|
||||
}
|
||||
|
||||
block_SpinningWheel = TRUE;
|
||||
*mmctest = auto_testResult;
|
||||
|
||||
postpareTest(*mmctest, &d_mmcled, MMCLED, (void *)dioToggle,
|
||||
(pUINT8) "MMCerror", &mmcled);
|
||||
sendString(SerOutPort, GotoNewLine, resultMessage,
|
||||
"\n\rMMC Test Result: ", s_lines, BoolRestoStr(*mmctest));
|
||||
}
|
||||
|
||||
|
||||
void r_PowerTest (BOOLEAN * powertest)
|
||||
{ /* Test for Power Supply */
|
||||
sendString(SerOutPort, TRUE, headerMessage,
|
||||
StartMessage, f_lines, "Power Supply");
|
||||
sendString (SerOutPort, FALSE, importantMessage,
|
||||
"\t", Dummy, Dummy);
|
||||
|
||||
block_SpinningWheel = FALSE;
|
||||
bpSendCallRpc(handleBus1, 2, 28, 0, NULL); /* Call eepromTest() */
|
||||
|
||||
if (xSemaphoreTake(generalSemaphore, 5000) != pdPASS)
|
||||
{
|
||||
block_SpinningWheel = TRUE;
|
||||
sendString (SerOutPort, TRUE, importantMessage,
|
||||
"\tTimeout occoured!", Dummy, Dummy);
|
||||
auto_testResult = FALSE;
|
||||
xSemaphoreGive (generalSemaphore);
|
||||
}
|
||||
block_SpinningWheel = TRUE;
|
||||
*powertest = auto_testResult;
|
||||
postpareTest(*powertest, &d_powerled, POWERLED, (void *)dioToggle,
|
||||
(pUINT8) "POWERerror", &powerled);
|
||||
|
||||
sendString(SerOutPort, GotoNewLine, resultMessage,
|
||||
"\n\rPower Supply Test Result:",
|
||||
f_lines, BoolRestoStr(*powertest));
|
||||
}
|
||||
|
||||
|
||||
void r_RTCTest (BOOLEAN * rtctest)
|
||||
{ /* Test for Real Time Clock */
|
||||
sendString(SerOutPort, TRUE, headerMessage,
|
||||
StartMessage, f_lines, "RealTimeClock");
|
||||
sendString (SerOutPort, FALSE, importantMessage,
|
||||
"\t", Dummy, Dummy);
|
||||
|
||||
block_SpinningWheel = FALSE;
|
||||
bpSendCallRpc(handleBus1, 2, 29, 0, NULL); /* Call eepromTest() */
|
||||
|
||||
if (xSemaphoreTake(generalSemaphore, 5000) != pdPASS)
|
||||
{
|
||||
block_SpinningWheel = TRUE;
|
||||
sendString (SerOutPort, TRUE, importantMessage,
|
||||
"\tTimeout occoured!", Dummy, Dummy);
|
||||
auto_testResult = FALSE;
|
||||
xSemaphoreGive (generalSemaphore);
|
||||
}
|
||||
block_SpinningWheel = TRUE;
|
||||
*rtctest = auto_testResult;
|
||||
postpareTest(*rtctest, &d_rtcled, RTCLED, (void *)dioToggle,
|
||||
(pUINT8) "RTCerror", &rtcled);
|
||||
|
||||
sendString(SerOutPort, GotoNewLine, resultMessage,
|
||||
"\n\rRealTimeClock Test Result:",
|
||||
f_lines, BoolRestoStr(*rtctest));
|
||||
}
|
||||
|
||||
|
||||
/* Function to handle all necessary commands and calculations after a
|
||||
* single test. Because these are all the same, they are done in a
|
||||
* extra function
|
||||
*/
|
||||
void postpareTest (BOOLEAN TestResult, portBASE_TYPE *basetype,
|
||||
UINT32 LEDNumber, pdTASK_CODE TaskCode,
|
||||
pUINT8 taskname, xTaskHandle *pTaskHandler)
|
||||
{
|
||||
|
||||
if (TestResult == TRUE)
|
||||
{ /* if Test is passed */
|
||||
if (*basetype == pdPASS) /* If defined Task exists */
|
||||
{
|
||||
vTaskDelete (*pTaskHandler);/* Delete defined Task */
|
||||
*basetype = 0; /* Reset corresponding bastetype */
|
||||
}
|
||||
dioWrite( 0, LEDNumber, TRUE); /* illume corresponding LED */
|
||||
}
|
||||
else
|
||||
{ /* if DIO Test fails */
|
||||
if (*basetype == pdPASS)
|
||||
{
|
||||
/* Task already exists, so do nothing */
|
||||
}
|
||||
else
|
||||
{
|
||||
*basetype = xTaskCreate((void *)TaskCode,
|
||||
( signed portCHAR * ) taskname,
|
||||
configMINIMAL_STACK_SIZE, (UINT16 *)LEDNumber,
|
||||
tskIDLE_PRIORITY + 2, pTaskHandler);
|
||||
} /* Create Task to flash LED */
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user