view cdg-hybrid/cdginc/p_dio.val @ 268:f2e52cab0a73

abb_inth.c: check all interrupt causes, not just one The original code used if - else if - else if etc constructs, thus the first detected interrupt was the only one handled. However, Iota ITSTATREG is a clear-on-read register, thus if we only handle the first detected interrupt and skip checking the others, then the other interrupts will be lost, if more than one interrupt happened to occur in one ABB interrupt handling cycle - a form of rare race condition. Change the code to check all interrupts that were read in this cycle.
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 13 Jun 2021 18:17:53 +0000
parents 35f7a1dc9f7d
children
line wrap: on
line source

/*
+--------------------------------------------------------------------------+
| PROJECT : PROTOCOL STACK                                                 |
| FILE    : p_dio.val                                                      |
| SOURCE  : "sap\dio.pdf"                                                  |
| LastModified : "2004-03-19"                                              |
| IdAndVersion : "..."                                                     |
| SrcFileTime  : "Thu Nov 29 09:39:48 2007"                                |
| Generated by CCDGEN_2.5.5A on Fri Oct 14 21:41:52 2016                   |
|           !!DO NOT MODIFY!!DO NOT MODIFY!!DO NOT MODIFY!!                |
+--------------------------------------------------------------------------+
*/

/* PRAGMAS
 * PREFIX                 : NONE
 * COMPATIBILITY_DEFINES  : NO (require PREFIX)
 * ALWAYS_ENUM_IN_VAL_FILE: NO
 * ENABLE_GROUP: NO
 * CAPITALIZE_TYPENAME: NO
 */


#ifndef P_DIO_VAL
#define P_DIO_VAL


#define CDG_ENTER__P_DIO_VAL

#define CDG_ENTER__FILENAME _P_DIO_VAL
#define CDG_ENTER__P_DIO_VAL__FILE_TYPE CDGINC
#define CDG_ENTER__P_DIO_VAL__LAST_MODIFIED _2004_03_19
#define CDG_ENTER__P_DIO_VAL__ID_AND_VERSION _

#define CDG_ENTER__P_DIO_VAL__SRC_FILE_TIME _Thu_Nov_29_09_39_48_2007

#include "CDG_ENTER.h"

#undef CDG_ENTER__P_DIO_VAL

#undef CDG_ENTER__FILENAME


/*
 * Value constants for VAL_baud_rate
 */
#define DIO4_BAUD_RESERVED             (0x0)      /* reserved value                 */
#define DIO4_BAUD_AUTO                 (0x1)      /* Automatic detected             */
#define DIO4_BAUD_75                   (0x2)      /* Transmission rate of 75 bits/sec */
#define DIO4_BAUD_110                  (0x4)      /* Transmission rate of 110 bits/sec */
#define DIO4_BAUD_150                  (0x8)      /* Transmission rate of 150 bits/sec */
#define DIO4_BAUD_300                  (0x10)     /* Transmission rate of 300 bits/sec */
#define DIO4_BAUD_600                  (0x20)     /* Transmission rate of 600 bits/sec */
#define DIO4_BAUD_1200                 (0x40)     /* Transmission rate of 1200 bits/sec */
#define DIO4_BAUD_2400                 (0x80)     /* Transmission rate of 2400 bits/sec */
#define DIO4_BAUD_4800                 (0x100)    /* Transmission rate of 4800 bits/sec */
#define DIO4_BAUD_7200                 (0x200)    /* Transmission rate of 7200 bits/sec */
#define DIO4_BAUD_9600                 (0x400)    /* Transmission rate of 9600 bits/sec */
#define DIO4_BAUD_14400                (0x800)    /* Transmission rate of 14400 bits/sec */
#define DIO4_BAUD_19200                (0x1000)   /* Transmission rate of 19200 bits/se */
#define DIO4_BAUD_28800                (0x2000)   /* Transmission rate of 28800 bits/se */
#define DIO4_BAUD_33900                (0x4000)   /* Transmission rate of 33900 bits/se */
#define DIO4_BAUD_38400                (0x8000)   /* Transmission rate of 38400 bits/se */
#define DIO4_BAUD_57600                (0x10000)  /* Transmission rate of 57600 bits/se */
#define DIO4_BAUD_115200               (0x20000)  /* Transmission rate of 115200 bits/se */
#define DIO4_BAUD_203125               (0x40000)  /* Transmission rate of 203125 bits/se */
#define DIO4_BAUD_230400               (0x80000)  /* Transmission rate of 230400 bits/se */
#define DIO4_BAUD_406250               (0x100000) /* Transmission rate of 406250 bits/se */
#define DIO4_BAUD_460800               (0x200000) /* Transmission rate of460800 bits/se */
#define DIO4_BAUD_812500               (0x400000) /* Transmission rate of 812500 bits/se */
#define DIO4_BAUD_921600               (0x800000) /* Transmission rate of 921600 bits/se */

/*
 * Value constants for VAL_dev_type
 */
#define DIO_DATA_MUX                   (0x200000) /* device can start a multiplexer */
#define DIO_DATA_PKT                   (0x400000) /* device can contain packet data */
#define DIO_DATA_SER                   (0x800000) /* device can contain serial data */
#define DIO_DATA_SER_MUX               (0xa0000)  /* serial device which can start a multiplexer */
#define DIO_TYPE_ID_MASK               (0xff00)   /* mask for dio identifier to separate different capability structs with the same combination */
#define DIO_TYPE_DAT_MASK              (0xff0000) /* mask for dio identifier to separate kind of data support */
#define DIO_TYPE_SER                   (0x800100) /* Type for serial devices like UART */
#define DIO_TYPE_SER_MUX               (0xa00100) /* Type for serial devices like UART. It is possible to start a 27.010 multiplexer on devices of this type */
#define DIO_TYPE_PKT                   (0x400100) /* Type for packet devices        */

/*
 * Value constants for VAL_char_frame
 */
#define DIO_CF_8N2                     (0x1)      /* 8 data bits; no parity bit; 2 stop bits */
#define DIO_CF_8O1                     (0x2)      /* 8 data bits; odd parity bit; 1 stop bits */
#define DIO_CF_8E1                     (0x4)      /* 8 data bits; even parity bit; 1 stop bits */
#define DIO_CF_8M1                     (0x8)      /* 8 data bits; mark parity bit; 1 stop bits */
#define DIO_CF_8S1                     (0x10)     /* 8 data bits; space parity bit; 1 stop bits */
#define DIO_CF_8N1                     (0x20)     /* 8 data bits; no parity bit; 1 stop bits */
#define DIO_CF_7N2                     (0x40)     /* 7 data bits; no parity bit; 2 stop bits */
#define DIO_CF_7O1                     (0x80)     /* 7 data bits; odd parity bit; 1 stop bits */
#define DIO_CF_7E1                     (0x100)    /* 7 data bits; even parity bit; 1 stop bits */
#define DIO_CF_7M1                     (0x200)    /* 7 data bits; mark parity bit; 1 stop bits */
#define DIO_CF_7S1                     (0x400)    /* 7 data bits; space  parity bit;1 stop bits */
#define DIO_CF_7N1                     (0x800)    /* 7 data bits; no parity bit; 1 stop bits */

/*
 * Value constants for VAL_flow_control
 */
#define DIO_FLOW_NONE                  (0x1)      /* Data transmit: None   Data receive: None */
#define DIO_FLOW_NO_XOFF               (0x2)      /* Data transmit: None    Data receive: XON/XOFF */
#define DIO_FLOW_NO_CTS                (0x4)      /* Data transmit: None   Data receive: CTS */
#define DIO_FLOW_XON_NO                (0x8)      /* Data transmit:  local XON/XOFF Data receive: None */
#define DIO_FLOW_XON_XOFF              (0x10)     /* Data transmit:  local XON/XOFF Data receive: XON/XOFF */
#define DIO_FLOW_XON_CTS               (0x20)     /* Data transmit:  local XON/XOFF Data receive:CTS */
#define DIO_FLOW_RTS_NO                (0x40)     /* Data transmit: RTS  Data receive: None */
#define DIO_FLOW_RTS_XOFF              (0x80)     /* Data transmit: RTS  Data receive: XON/XOFF */
#define DIO_FLOW_RTS_CTS               (0x100)    /* Data transmit: RTS  Data receive: CTS */
#define DIO_FLOW_XTR_NO                (0x200)    /* Data transmit: transparent XON/XOFF  Data receive: None */
#define DIO_FLOW_XTR_XOFF              (0x400)    /* Data transmit: transparent XON/XOFF Data receive: CTS */
#define DIO_FLOW_XTR_CTS               (0x800)    /* Data transmit: transparent XON/XOFF Data receive: CTS */

/*
 * Value constants for VAL_line_states
 */
#define LINE_STD_DCD_ON                (0x1)      /* b00000001 set line DCD on      */
#define LINE_STD_DCD_OFF               (0x2)      /* b00000010 set line DCD off     */
#define LINE_STD_RING_ON               (0x4)      /* b00000100 set line RING on     */
#define LINE_STD_RING_OFF              (0x8)      /* b00001000 set line RING off    */
#define LINE_STD_ESCD_IND              (0x10)     /* b00010000 escape sequence indication */
#define LINE_STD_DTR_LDR               (0x20)     /* b00100000 DTR line drop indication */

/*
 * Value constants for VAL_ser_flags
 */
#define DIO_FLAG_SER_ESC               (0x80000000)/* device supports escape sequence detection */

/*
 * Value constants for VAL_device
 */
#define DIO_DRV_MASK                   (0xff000000)/* mask for driver number to identify the driver */
#define DIO_TYPE_MASK                  (0xffff00) /* mask for device type           */
#define DIO_DEVICE_MASK                (0xff)     /* mask for actual device number chosen by the driver */
#define DIO_DRV_UART                   (0x0)      /* UART driver                    */
#define DIO_DRV_USB                    (0x1000000)/* USB driver                     */
#define DIO_DRV_MUX                    (0x2000000)/* 27.010 multiplexer driver      */
#define DIO_DRV_PKT                    (0x3000000)/* packet driver                  */
#define DIO_DRV_MCBSP                  (0x4000000)/* McBSP driver                   */
#define DIO_DRV_APP                    (0x5000000)/* Application adapter            */
#define DIO_DRV_BAT                    (0x6000000)/* Binary Interface Adapter       */

/*
 * Value constants for VAL_dev_flag
 */
#define DIO_FLAG_SLEEP                 (0x80000000)/* device provides the feature power saving state */

/*
 * Value constants for VAL_mux_mode
 */
#define DIO_MUX_BASIC                  (0x1)      /* mux supports Basic option      */
#define DIO_MUX_UIH                    (0x2)      /* mux supports Advanced option with UIH frames */
#define DIO_MUX_UI                     (0x4)      /* mux supports Advanced option with UI frames */
#define DIO_MUX_I                      (0x8)      /* mux supports Advanced option with I frames (error recovery) */

/*
 * Value constants for VAL_contr_type
 */
#define DIO4_CTRL_LINES                (0x1)      /* control struct contains serial line states */
#define DIO4_CTRL_MUX                  (0x2)      /* control struct contains mux control parameter */

/*
 * Value constants for VAL_dev_mode
 */
#define DIO_MODE_SER                   (0x1)      /* device acts as serial  device  */
#define DIO_MODE_MUX                   (0x2)      /* device acts as 27.010 mux device */

/*
 * Value constants for VAL_esc_char
 */
#define ESC_CHAR_DEFAULT               (0x2b)     /* default escape character ('+') */

/*
 * Value constants for VAL_guard_per
 */
#define DIO_ESC_OFF                    (0x0)      /* turn escape sequence detection off */
#define DIO_GUARD_PER_DEFAULT          (0x3e8)    /* default value 1000ms           */

/*
 * Value constants for VAL_k
 */
#define K_DEFAULT                      (0x2)      /* k default value                */

/*
 * Value constants for VAL_n1
 */
#define MUX_N1_BASIC_DEFAULT           (0x1f)     /* default value for the basic option */
#define MUX_N1_ADVANCED_DEFAULT        (0x40)     /* default value for the advanced option */

/*
 * Value constants for VAL_n2
 */
#define MUX_N2_DEFAULT                 (0x3)      /* default number of retransmission */

/*
 * Value constants for VAL_sleep_mode
 */
#define DIO_SLEEP_ENABLE               (0x1)      /* enter sleep mode if possible   */
#define DIO_SLEEP_DISABLE              (0x2)      /* do not enter sleep mode        */

/*
 * Value constants for VAL_cb_line_state
 */
#define DIO_SA                         (0x80000000)/* read/write: device ready       */
#define DIO_SB                         (0x40000000)/* read/write: data valid         */
#define DIO_X                          (0x20000000)/* read/write: flow control       */
#define DIO_RING                       (0x10000000)/* write: RING indicator          */
#define DIO_ESC                        (0x8000000)/* read: escape seqence detected  */
#define DIO_MUX_STOPPED                (0x4000000)/* multiplexer stopped            */
#define DIO_BRK                        (0x2000000)/* read/write: break received/to be send */
#define DIO_BRKLEN_MASK                (0xff)     /* read/write: length of break signal in character; only valid if DIO_BREAK bit is set to 1 */

/*
 * Value constants for VAL_t1
 */
#define MUX_T1_DEFAULT                 (0xa)      /* default acknowledgement  timer (100ms) */

/*
 * Value constants for VAL_t2
 */
#define MUX_T2_DEFAULT                 (0x1e)     /* default response timer         */

/*
 * Value constants for VAL_t3
 */
#define MUX_T3_DEFAULT                 (0xa)      /* default wake up response timer (100ms) */

/*
 * Value constants for VAL_xoff
 */
#define XOFF_DEFAULT                   (0x13)     /* xoff default value             */

/*
 * Value constants for VAL_xon
 */
#define XON_DEFAULT                    (0x11)     /* xon default value              */

/*
 * Value constants for VAL_start_mux
 */
#define DIO_MUX_DYNAMIC                (0x0)      /* Do not start the 27.010 multiplexer immediately. The multi-plexer may be started dynamically on runtime */
#define DIO_MUX_START                  (0x1)      /* Starts the 27.010 multiplexer permanently. The multiplexer can not be turned off during runtime */

#include "CDG_LEAVE.h"


#endif