This commit is contained in:
skarg
2006-08-29 10:48:04 +00:00
parent 0f851d57f0
commit 3d0abf778a
25 changed files with 487 additions and 525 deletions
+38 -38
View File
@@ -28,7 +28,7 @@
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <conio.h> /* for kbhit */
#include <conio.h> /* for kbhit */
#include "config.h"
#include "bacdef.h"
#include "npdu.h"
@@ -42,17 +42,17 @@
/* RTOS-32 */
#include "rtkernel.h"
#if defined(RTK32_VER)
#define _USER32_
#define _KERNEL32_
#include <windows.h>
#include <rttarget.h> /* for RTCMOSSetSystemTime */
#include <rtfiles.h> /* file system */
#include <rtfsys.h> /* file system */
#include <Rttbios.h>
#define _USER32_
#define _KERNEL32_
#include <windows.h>
#include <rttarget.h> /* for RTCMOSSetSystemTime */
#include <rtfiles.h> /* file system */
#include <rtfsys.h> /* file system */
#include <Rttbios.h>
#endif
#include <rtcom.h> /* serial port driver */
#include <itimer.h> /* time measurement & timer interrupt rate control */
#include <rtkeybrd.h> /* interrupt handler for the keyboard */
#include <rtcom.h> /* serial port driver */
#include <itimer.h> /* time measurement & timer interrupt rate control */
#include <rtkeybrd.h> /* interrupt handler for the keyboard */
/* buffers used for transmit and receive */
static uint8_t Rx_Buf[MAX_MPDU] = { 0 };
@@ -60,10 +60,12 @@ static uint8_t Rx_Buf[MAX_MPDU] = { 0 };
static void Init_Service_Handlers(void)
{
/* we need to handle who-is to support dynamic device binding */
apdu_set_unconfirmed_handler(SERVICE_UNCONFIRMED_WHO_IS, handler_who_is);
apdu_set_unconfirmed_handler(SERVICE_UNCONFIRMED_WHO_IS,
handler_who_is);
/* set the handler for all the services we don't implement */
/* It is required to send the proper reject message... */
apdu_set_unrecognized_service_handler_handler(handler_unrecognized_service);
apdu_set_unrecognized_service_handler_handler
(handler_unrecognized_service);
/* we must implement read property - it's required! */
apdu_set_confirmed_handler(SERVICE_CONFIRMED_READ_PROPERTY,
handler_read_property);
@@ -73,30 +75,28 @@ static void Init_Service_Handlers(void)
void millisecond_task(void)
{
Time ticks = 0; /* task cycle */
int i = 0; /* loop counter */
Time ticks = 0; /* task cycle */
int i = 0; /* loop counter */
ticks = RTKGetTime() + MilliSecsToTicks(1);
while (TRUE)
{
RTKDelayUntil(ticks);
dlmstp_millisecond_timer();
ticks += MilliSecsToTicks(1);
}
ticks = RTKGetTime() + MilliSecsToTicks(1);
while (TRUE) {
RTKDelayUntil(ticks);
dlmstp_millisecond_timer();
ticks += MilliSecsToTicks(1);
}
}
void RTOS_Initialize(void)
{
/* allow OS to setup IRQ 1 by using a dummy call */
(void)kbhit();
(void) kbhit();
RTKernelInit(0); /* get the kernel going */
RTKeybrdInit();
//(void)CPUMoniInit(); /* not needed - just monitor idle task */
RTComInit();
ITimerInit();
if (RTCallDebugger(RT_DBG_MONITOR,0,0) != -1)
{
if (RTCallDebugger(RT_DBG_MONITOR, 0, 0) != -1) {
/* Win32 structured exception - if no handler is
installed, TerminateProcess() will be called,
which will reboot - a good thing in our case. */
@@ -107,25 +107,25 @@ void RTOS_Initialize(void)
RTRaiseCPUException(4); // Overflow INTO instruction.
RTRaiseCPUException(5); // BOUND Range Exceeded BOUND instruction.
RTRaiseCPUException(6); // Invalid Opcode (Undefined Opcode)
// RTRaiseCPUException(7); // Device Not Available (No Math Coprocessor)
// RTRaiseCPUException(7); // Device Not Available (No Math Coprocessor)
RTRaiseCPUException(8); // Double Fault any exception instruction,NMI,INTR.
RTRaiseCPUException(9); // Co-Processor overrun
RTRaiseCPUException(10); // Invalid TSS Task switch or TSS access.
RTRaiseCPUException(11); // Segment Not Present Loading segment registers
RTRaiseCPUException(12); // Stack Seg Fault Stack ops /SS reg loads.
RTRaiseCPUException(13); // General Protection Any memory reference
RTRaiseCPUException(14); // Page Fault Any memory reference.
RTRaiseCPUException(15); // reserved
RTRaiseCPUException(16); // Floating-Point Error (Math Fault)
RTRaiseCPUException(10); // Invalid TSS Task switch or TSS access.
RTRaiseCPUException(11); // Segment Not Present Loading segment registers
RTRaiseCPUException(12); // Stack Seg Fault Stack ops /SS reg loads.
RTRaiseCPUException(13); // General Protection Any memory reference
RTRaiseCPUException(14); // Page Fault Any memory reference.
RTRaiseCPUException(15); // reserved
RTRaiseCPUException(16); // Floating-Point Error (Math Fault)
}
/* setup 1ms timer tick */
SetTimerIntVal(1000);
/* per recommendation in manual */
RTKDelay(1);
RTCMOSSetSystemTime(); /* get the right time-of-day */
/* create timer tick task */
RTKCreateTask(millisecond_task,1,1024*8,"millisec task");
RTKCreateTask(millisecond_task, 1, 1024 * 8, "millisec task");
}
int main(int argc, char *argv[])
@@ -138,7 +138,7 @@ int main(int argc, char *argv[])
(void) argv;
Device_Set_Object_Instance_Number(126);
Init_Service_Handlers();
RTOS_Initialize();
RTOS_Initialize();
/* init the physical layer */
#ifdef BACDL_BIP
if (!bip_init())
@@ -166,7 +166,7 @@ int main(int argc, char *argv[])
npdu_handler(&src, &Rx_Buf[0], pdu_len);
}
/* output */
/* blink LEDs, Turn on or off outputs, etc */