| 1 | /*----------------------------------------------------------------------------- | 
|---|
| 2 | afil.h -- Acceptance filtering of CAN messages | 
|---|
| 3 |  | 
|---|
| 4 | Copyright (c) 1994 JANZ Computer AG | 
|---|
| 5 | All Rights Reserved | 
|---|
| 6 |  | 
|---|
| 7 | Created 94/10/11 by Soenke Hansen | 
|---|
| 8 | Version 1.7 of 99/12/07 | 
|---|
| 9 |  | 
|---|
| 10 | Based on their Id's received CAN messages are accepted or rejected. | 
|---|
| 11 | CAN frames for which the filter is open will always be accepted. | 
|---|
| 12 | A close request to the filter may not honored as it is possible | 
|---|
| 13 | that the filter is not implemented. | 
|---|
| 14 |  | 
|---|
| 15 | -----------------------------------------------------------------------------*/ | 
|---|
| 16 |  | 
|---|
| 17 | #ifndef afil_DEFINED | 
|---|
| 18 | #define afil_DEFINED | 
|---|
| 19 |  | 
|---|
| 20 | #ifdef __cplusplus | 
|---|
| 21 | extern "C" { | 
|---|
| 22 | #endif | 
|---|
| 23 |  | 
|---|
| 24 | #include "defs.h" | 
|---|
| 25 | #include "msg.h" | 
|---|
| 26 | #include "icanconf.h" | 
|---|
| 27 |  | 
|---|
| 28 |  | 
|---|
| 29 | /*-------- Acceptance Filtering of CAN Ids ---------------------------------*/ | 
|---|
| 30 |  | 
|---|
| 31 | #if ICAN_FILTER == 1 | 
|---|
| 32 |  | 
|---|
| 33 | /* */ | 
|---|
| 34 | extern BYTE_t id_filter[]; | 
|---|
| 35 |  | 
|---|
| 36 | /* Initialize the acceptance filter for CAN identifiers */ | 
|---|
| 37 | extern void init_afil(void); | 
|---|
| 38 |  | 
|---|
| 39 | /* Return true if CAN message with given Id is accepted */ | 
|---|
| 40 | extern int accept_afil(WORD_t); | 
|---|
| 41 |  | 
|---|
| 42 | /* Open the acceptance filter for a given id, so messages received | 
|---|
| 43 | with this id will pass the acceptance test */ | 
|---|
| 44 | extern void open_afil(WORD_t); | 
|---|
| 45 |  | 
|---|
| 46 | /* Close the acceptance filter for a given id, so messages received | 
|---|
| 47 | with this id will not pass the acceptance test */ | 
|---|
| 48 | extern void close_afil(WORD_t); | 
|---|
| 49 |  | 
|---|
| 50 | /* Open the acceptance filter for a given range of ids, so messages received | 
|---|
| 51 | with ids in that range will pass the acceptance test */ | 
|---|
| 52 | extern void ropen_afil(WORD_t, WORD_t); | 
|---|
| 53 |  | 
|---|
| 54 | /* Close the acceptance filter for a given range of ids, so messages received | 
|---|
| 55 | with ids in that range will not pass the acceptance test */ | 
|---|
| 56 | extern void rclose_afil(WORD_t, WORD_t); | 
|---|
| 57 |  | 
|---|
| 58 | /* Get the current state of the filter mask for a given id. */ | 
|---|
| 59 | extern int get_afil_mask(WORD_t); | 
|---|
| 60 |  | 
|---|
| 61 | /* Set the filter mask for a given id. */ | 
|---|
| 62 | extern void set_afil_mask(WORD_t, WORD_t); | 
|---|
| 63 |  | 
|---|
| 64 | /* Set the acceptance filter mask for a given range of ids. | 
|---|
| 65 | You may set the mask to a value in the range 0..(2^BITS_PER_ID)-1. */ | 
|---|
| 66 | void rset_afil_mask(WORD_t, WORD_t, WORD_t); | 
|---|
| 67 |  | 
|---|
| 68 | /* Open the sniff acceptance filter for a given range of ids, so messages received | 
|---|
| 69 | with ids in that range will pass the acceptance test */ | 
|---|
| 70 | extern void ropen_sniff_fil(BYTE_t, WORD_t, WORD_t); | 
|---|
| 71 |  | 
|---|
| 72 | /* Close the sniff acceptance filter for a given range of ids, so messages received | 
|---|
| 73 | with ids in that range will not pass the acceptance test */ | 
|---|
| 74 | extern void rclose_sniff_fil(BYTE_t, WORD_t, WORD_t); | 
|---|
| 75 |  | 
|---|
| 76 | #endif /* ICAN_FILTER == 1 */ | 
|---|
| 77 |  | 
|---|
| 78 | #if ICAN_FILTER == 0            /* filtering not implemented; dummies */ | 
|---|
| 79 | #define init_afil() | 
|---|
| 80 | #define accept_afil(id)   1             /* accept everything */ | 
|---|
| 81 | #define open_afil(id) | 
|---|
| 82 | #define close_afil(id) | 
|---|
| 83 | #define ropen_afil(idl, idh) | 
|---|
| 84 | #define rclose_afil(idl, idh) | 
|---|
| 85 | #endif /* ICAN_FILTER == 0 */ | 
|---|
| 86 |  | 
|---|
| 87 |  | 
|---|
| 88 |  | 
|---|
| 89 | #define CAN_2_0_A       1 | 
|---|
| 90 | #define CAN_2_0_B       2 | 
|---|
| 91 |  | 
|---|
| 92 | extern void initSniffFil(void); | 
|---|
| 93 | extern void rangeSetSniffFil(BYTE_t canSpec, WORD_t idl, WORD_t idh, BYTE_t value); | 
|---|
| 94 | extern int getSniffFil(BYTE_t canSpec, LWORD_t id); | 
|---|
| 95 |  | 
|---|
| 96 | #ifdef __cplusplus | 
|---|
| 97 | } | 
|---|
| 98 | #endif | 
|---|
| 99 |  | 
|---|
| 100 | #endif /* !afil_DEFINED */ | 
|---|