| 1 | /*----------------------------------------------------------------------------- | 
|---|
| 2 | icanconf.h -- ICANOS specific definitions | 
|---|
| 3 |  | 
|---|
| 4 | Copyright (c) 1994 JANZ Computer AG | 
|---|
| 5 | All Rights Reserved | 
|---|
| 6 |  | 
|---|
| 7 | Created 94/10/11 by Soenke Hansen | 
|---|
| 8 | Version 1.16 of 99/06/23 | 
|---|
| 9 |  | 
|---|
| 10 | Declarations and definitions of functions and macros: | 
|---|
| 11 | - disable/enable CAN and clock interrupts | 
|---|
| 12 | - start/stop a periodical timer | 
|---|
| 13 | - read/write registers in Basic CAN controller | 
|---|
| 14 | The conditionally included files i8051.h and mc68332.h contain | 
|---|
| 15 | examples for the Intel 8051 and Motorola 68332 micro-controller | 
|---|
| 16 | families, respectively. | 
|---|
| 17 |  | 
|---|
| 18 | Some definitions in bcan.h depend on the oscillator frequency used | 
|---|
| 19 | for the Basic CAN controller.  Currently only definitions for a 16 MHz | 
|---|
| 20 | oscillator are given.  These are activated by defining OSC_16MHZ here. | 
|---|
| 21 |  | 
|---|
| 22 | Memory allocation functions: | 
|---|
| 23 | - malloc() and free() | 
|---|
| 24 | If these functions are not available from a system library the | 
|---|
| 25 | functions implemented in malloc.c are used if OUR_MALLOC==1. | 
|---|
| 26 | These functions allocate memory from a fixed size array. | 
|---|
| 27 | The length of this array in bytes is given by MALLOC_BYTES. | 
|---|
| 28 | The data type ALIGN_t is used to insure that malloc returns addresses | 
|---|
| 29 | which are correctly aligned for every data type. | 
|---|
| 30 |  | 
|---|
| 31 | -----------------------------------------------------------------------------*/ | 
|---|
| 32 |  | 
|---|
| 33 | #ifndef icanconf_DEFINED | 
|---|
| 34 | #define icanconf_DEFINED | 
|---|
| 35 |  | 
|---|
| 36 | #ifdef __cplusplus | 
|---|
| 37 | extern "C" { | 
|---|
| 38 | #endif | 
|---|
| 39 |  | 
|---|
| 40 | /* Load the user configuration */ | 
|---|
| 41 | #include "config.h" | 
|---|
| 42 |  | 
|---|
| 43 | /* Intel 8051 family with Archimedes C-51 compiler */ | 
|---|
| 44 | #ifdef i8051 | 
|---|
| 45 | #include "i8051.h" | 
|---|
| 46 | #endif | 
|---|
| 47 |  | 
|---|
| 48 | /* Motorola 68332 with Microtec Research C compiler */ | 
|---|
| 49 | #ifdef mc68332 | 
|---|
| 50 | #include "mc68332.h" | 
|---|
| 51 | #endif | 
|---|
| 52 |  | 
|---|
| 53 | /* Implementation options */ | 
|---|
| 54 | #ifndef ICAN_ECHO | 
|---|
| 55 | #define ICAN_ECHO       1       /* with local transmit echo if == 1 */ | 
|---|
| 56 | #endif | 
|---|
| 57 | #ifndef ICAN_FILTER | 
|---|
| 58 | #define ICAN_FILTER     1       /* with acceptance filtering if == 1 */ | 
|---|
| 59 | #endif | 
|---|
| 60 |  | 
|---|
| 61 | /* Set maximum CAN send queue length. */ | 
|---|
| 62 | #ifndef TX_QUEUE_LEN | 
|---|
| 63 | #define TX_QUEUE_LEN    20 | 
|---|
| 64 | #endif | 
|---|
| 65 |  | 
|---|
| 66 | /* Define this if a 16 MHz oscillator is used for BCAN */ | 
|---|
| 67 | #define OSC_16MHZ | 
|---|
| 68 |  | 
|---|
| 69 | /*------- Memory allocation ------------------------------------------------*/ | 
|---|
| 70 |  | 
|---|
| 71 | /* If OUR_MALLOC is !=0 then malloc() and fre() as implemented in | 
|---|
| 72 | malloc.c are used else the system library functions are used. | 
|---|
| 73 | By default our functions are used. */ | 
|---|
| 74 | #ifndef OUR_MALLOC | 
|---|
| 75 | #define OUR_MALLOC              0       /* if true, use our malloc and free */ | 
|---|
| 76 | #endif | 
|---|
| 77 |  | 
|---|
| 78 | /* Memory management */ | 
|---|
| 79 | #if OUR_MALLOC == 1             /* using our malloc and free? */ | 
|---|
| 80 |  | 
|---|
| 81 | #ifndef MALLOC_BYTES | 
|---|
| 82 | #define MALLOC_BYTES    8000    /* size in bytes of alloc array */ | 
|---|
| 83 | #endif | 
|---|
| 84 | typedef int ALIGN_t;                    /* alignment type */ | 
|---|
| 85 |  | 
|---|
| 86 | /* Memory is allocated from an array of blocks of type HEADER */ | 
|---|
| 87 | union header { /* free block header */ | 
|---|
| 88 | struct { | 
|---|
| 89 | union header    *ptr;   /* next free block */ | 
|---|
| 90 | unsigned        size;   /* size of this free block */ | 
|---|
| 91 | } s; | 
|---|
| 92 | ALIGN_t x;                      /* force alignment of blocks */ | 
|---|
| 93 | }; | 
|---|
| 94 |  | 
|---|
| 95 | typedef union header HEADER; | 
|---|
| 96 |  | 
|---|
| 97 | /* Maximum number of blocks */ | 
|---|
| 98 | #define MALLOC_BLOCKS (MALLOC_BYTES/sizeof(HEADER)+1) | 
|---|
| 99 |  | 
|---|
| 100 | extern void init_malloc();              /* initialization of alloc array */ | 
|---|
| 101 | extern void *malloc();                  /* well known function */ | 
|---|
| 102 | extern void free();                     /* well known function */ | 
|---|
| 103 | extern int check_free_mem();            /* check for free memory */ | 
|---|
| 104 |  | 
|---|
| 105 | #else                           /* use malloc and free of system library */ | 
|---|
| 106 | #include <stdlib.h> | 
|---|
| 107 | #define init_malloc() | 
|---|
| 108 | #endif | 
|---|
| 109 | #define FREE(p) if ((p)) free((void *)p) | 
|---|
| 110 |  | 
|---|
| 111 |  | 
|---|
| 112 | /*------- Debugging tools (for development at JANZ only) -------------------*/ | 
|---|
| 113 |  | 
|---|
| 114 | #ifndef DEBUG | 
|---|
| 115 | #define DEBUG           0       /* default: no debugging */ | 
|---|
| 116 | #endif | 
|---|
| 117 |  | 
|---|
| 118 | /* Logging */ | 
|---|
| 119 | #if DEBUG>0 | 
|---|
| 120 | #include "debug.h" | 
|---|
| 121 | #else | 
|---|
| 122 | #define PRINTF(args) | 
|---|
| 123 | #define LOG(level, args) | 
|---|
| 124 | #define DESPAIR | 
|---|
| 125 | #endif | 
|---|
| 126 |  | 
|---|
| 127 | #ifndef BIGBOX | 
|---|
| 128 | #ifdef GDBDEBUG | 
|---|
| 129 | #include "userIf.h" | 
|---|
| 130 | #else | 
|---|
| 131 | #define KPRINTF(X) | 
|---|
| 132 | #endif | 
|---|
| 133 | #endif | 
|---|
| 134 |  | 
|---|
| 135 | /* Dummies */ | 
|---|
| 136 | #if DEBUG==1 | 
|---|
| 137 | #include "simul.h" | 
|---|
| 138 | #endif | 
|---|
| 139 |  | 
|---|
| 140 | #ifdef __cplusplus | 
|---|
| 141 | } | 
|---|
| 142 | #endif | 
|---|
| 143 |  | 
|---|
| 144 | #endif /* !icanconf_DEFINED */ | 
|---|