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:
Matthias
2009-01-12 08:37:59 +00:00
parent 9acc85b348
commit a0ccd623c6
54 changed files with 0 additions and 0 deletions
@@ -0,0 +1,176 @@
/* ---------------------------------------------------------------------------
* protocolfunctions.c - v0.1 (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: Initialisation and direct usage of the Bus Protocol
* ---------------------------------------------------------------------------
* Version(s): 0.1, Jun 2, 2008, MMi
* Creation.
* ---------------------------------------------------------------------------
*/
/* ---------------------------------------------------------------------------
* System include files
* ---------------------------------------------------------------------------
*/
#include "LPC23xx.h"
#include "types.h"
#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"
/* ---------------------------------------------------------------------------
* Application include files
* ---------------------------------------------------------------------------
*/
#include "protocolfunctions.h"
#include "BusProtocol.h"
#include "adc.h"
#include "dac.h"
#include "bus.h"
#include "dio.h"
#include "serial.h"
#include "SerOut.h"
#include "topoftest.h"
#include "remote_digital.h"
#include "remote_analogue.h"
#include "remote_relay.h"
/* ---------------------------------------------------------------------------
* Local constant and macro definitions
* ---------------------------------------------------------------------------
*/
/* ---------------------------------------------------------------------------
* Global variable definitions
* ---------------------------------------------------------------------------
*/
extern BOOLEAN auto_testResult;
extern UINT32 UINT32result;
/* ---------------------------------------------------------------------------
* Local variable definitions
* ---------------------------------------------------------------------------
*/
/* ---------------------------------------------------------------------------
* Local function definitions
* ---------------------------------------------------------------------------
*/
void protocolInit (t_bus_devices BUS_ID, UINT32 DEV_ID, UINT32 MAX_ID)
{
/* Create both needed Semaphores to be able to use them */
vSemaphoreCreateBinary (generalSemaphore);
vSemaphoreCreateBinary (slaveRestartSemaphore);
/* Init Device as Master of BUS1 System */
handleBus1 = bpInit (BUS2, BUS1, DEV_ID, MAX_ID, 16);
/* Attach basicly needed Handshake Functions */
bpAttachRpc (handleBus1, 1, "AvailableID", (t_rpc_remote_procedure_call) availableBusID, 0);
bpAttachRpcResult(handleBus1, 1, (t_bp_rpcresult_callback) generalResultFunction, 0);
/* Following Attachments depend on Device ID */
if (DEV_ID == 1)
{
/* If Device is Master, attach these functions */
/* Attach Slave Result Functions (called by Slave on the Master) */
bpAttachRpcResult(handleBus1, 2, (t_bp_rpcresult_callback) testResultFunction, 1);
bpAttachRpcResult(handleBus1, 3, (t_bp_rpcresult_callback) slaveRestartFunction, 0);
bpAttachRpcResult(handleBus1, 4, (t_bp_rpcresult_callback) UINT32ResultFunction, 1);
bpAttachRpcResult(handleBus1, 9, (t_bp_rpcresult_callback) receiveRemoteAttachedFunctions, 1);
/* Attach test result functions */
bpAttachRpcResult(handleBus1, 11, (t_bp_rpcresult_callback) digitalReadResult, 1);
bpAttachRpcResult(handleBus1, 12, (t_bp_rpcresult_callback) analogueReadResult, 1);
bpAttachRpcResult(handleBus1, 13, (t_bp_rpcresult_callback) digitalReadAllResult, maxDI_Channels);
bpAttachRpcResult(handleBus1, 14, (t_bp_rpcresult_callback) analogueReadAllResult, maxDAC_Channels);
/* Attach semaphore release functions */
bpAttachRpcResult(handleBus1, 20, (t_bp_rpcresult_callback) remoteDigitalSemaphoreRelease, 0);
bpAttachRpcResult(handleBus1, 21, (t_bp_rpcresult_callback) remoteAnalogueSemaphoreRelease, 0);
bpAttachRpcResult(handleBus1, 22, (t_bp_rpcresult_callback) remoteRelaySemaphoreRelease, 0);
}
if (DEV_ID > 1)
{
/* If Device is Slave, attach these functions */
}
}
void availableBusID (UINT8 senderId, UINT8 targetId, UINT8 requestNr,
UINT8 functionId, UINT8 nrOfParams, UINT32 *params)
{
/* Just call first Result Function on Slave */
bpSendRpcResult(handleBus1, 2, 1, 1, 0, NULL);
}
/* generalResultFunction is the easiest Way to realise a Handshake between
* Master and Slave. Master software takes a Semaphore and calls a function
* on Slave, that is only calling generalResultfunction() on Master. If this
* happens, the Semaphore will be released and Handshake is done
*/
void generalResultFunction (UINT8 requestNr, UINT8 nrOfResults, UINT32 *results)
{
/* If called, release the generalSemaphore */
if (xSemaphoreGive (generalSemaphore) == pdTRUE)
{
}
else
{
}
}
/* Test functions called on Slave will return their Test Results with a
* call on this function. Results on Slave are from type BOOLEAN
*/
void testResultFunction (UINT8 requestNr, UINT8 nrOfResults, UINT32 *results)
{
/* Set Slave Test result depending on what slave sends back as parameter*/
if (*results == 1)
{
/* Test was successfull */
auto_testResult = TRUE;
}
else
{
/* Test was a failure */
auto_testResult = FALSE;
}
}
void slaveRestartFunction (UINT8 requestNr, UINT8 nrOfResults, UINT32 *results)
{
/* Release slaveRestartSemaphore if Slave calls this Function on Reboot */
if (xSemaphoreGive (slaveRestartSemaphore) == pdTRUE)
{
}
else
{
}
}
void UINT32ResultFunction (UINT8 requestNr, UINT8 nrOfResults, UINT32 *results)
{
UINT32result = *results;
}
void receiveRemoteAttachedFunctions (UINT8 requestNr, UINT8 nrOfResults, UINT32 *results)
{
sendString (SerOutPort, TRUE, importantMessage, (char *) results, Dummy, Dummy);
}