|  |  | 
|  | /* | 
|  | * | 
|  | Copyright (c) Eicon Networks, 2002. | 
|  | * | 
|  | This source file is supplied for the use with | 
|  | Eicon Networks range of DIVA Server Adapters. | 
|  | * | 
|  | Eicon File Revision :    2.1 | 
|  | * | 
|  | This program is free software; you can redistribute it and/or modify | 
|  | it under the terms of the GNU General Public License as published by | 
|  | the Free Software Foundation; either version 2, or (at your option) | 
|  | any later version. | 
|  | * | 
|  | This program is distributed in the hope that it will be useful, | 
|  | but WITHOUT ANY WARRANTY OF ANY KIND WHATSOEVER INCLUDING ANY | 
|  | implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 
|  | See the GNU General Public License for more details. | 
|  | * | 
|  | You should have received a copy of the GNU General Public License | 
|  | along with this program; if not, write to the Free Software | 
|  | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 
|  | * | 
|  | */ | 
|  | #ifndef DSP_DEFS_H_ | 
|  | #define DSP_DEFS_H_ | 
|  | #include "dspdids.h" | 
|  | /*---------------------------------------------------------------------------*/ | 
|  | #define dsp_download_reserve_space(fp, length) | 
|  | /*****************************************************************************/ | 
|  | /* | 
|  | * OS file access abstraction layer | 
|  | * | 
|  | * I/O functions returns -1 on error, 0 on EOF | 
|  | */ | 
|  | struct _OsFileHandle_; | 
|  | typedef long (*OsFileIo)(struct _OsFileHandle_ *handle, | 
|  | void *buffer, | 
|  | long size); | 
|  | typedef long (*OsFileSeek)(struct _OsFileHandle_ *handle, | 
|  | long position, | 
|  | int mode); | 
|  | typedef long (*OsCardLoad)(struct _OsFileHandle_    *handle, | 
|  | long length, | 
|  | void **addr); | 
|  | typedef struct _OsFileHandle_ | 
|  | { void       *sysFileDesc; | 
|  | unsigned long sysFileSize; | 
|  | OsFileIo      sysFileRead; | 
|  | OsFileSeek    sysFileSeek; | 
|  | void       *sysLoadDesc; | 
|  | OsCardLoad    sysCardLoad; | 
|  | } OsFileHandle; | 
|  | extern OsFileHandle *OsOpenFile(char *path_name); | 
|  | extern void          OsCloseFile(OsFileHandle *fp); | 
|  | /*****************************************************************************/ | 
|  | #define DSP_TELINDUS_FILE "dspdload.bin" | 
|  | /* special DSP file for BRI cards for Qsig and CornetN because of missing memory */ | 
|  | #define DSP_QSIG_TELINDUS_FILE "dspdqsig.bin" | 
|  | #define DSP_MDM_TELINDUS_FILE "dspdvmdm.bin" | 
|  | #define DSP_FAX_TELINDUS_FILE "dspdvfax.bin" | 
|  | #define DSP_DIRECTORY_ENTRIES 64 | 
|  | #define DSP_MEMORY_TYPE_EXTERNAL_DM         0 | 
|  | #define DSP_MEMORY_TYPE_EXTERNAL_PM         1 | 
|  | #define DSP_MEMORY_TYPE_INTERNAL_DM         2 | 
|  | #define DSP_MEMORY_TYPE_INTERNAL_PM         3 | 
|  | #define DSP_DOWNLOAD_FLAG_BOOTABLE          0x0001 | 
|  | #define DSP_DOWNLOAD_FLAG_2181              0x0002 | 
|  | #define DSP_DOWNLOAD_FLAG_TIMECRITICAL      0x0004 | 
|  | #define DSP_DOWNLOAD_FLAG_COMPAND           0x0008 | 
|  | #define DSP_MEMORY_BLOCK_COUNT              16 | 
|  | #define DSP_SEGMENT_PM_FLAG                 0x0001 | 
|  | #define DSP_SEGMENT_SHARED_FLAG             0x0002 | 
|  | #define DSP_SEGMENT_EXTERNAL_DM             DSP_MEMORY_TYPE_EXTERNAL_DM | 
|  | #define DSP_SEGMENT_EXTERNAL_PM             DSP_MEMORY_TYPE_EXTERNAL_PM | 
|  | #define DSP_SEGMENT_INTERNAL_DM             DSP_MEMORY_TYPE_INTERNAL_DM | 
|  | #define DSP_SEGMENT_INTERNAL_PM             DSP_MEMORY_TYPE_INTERNAL_PM | 
|  | #define DSP_SEGMENT_FIRST_RELOCATABLE       4 | 
|  | #define DSP_DATA_BLOCK_PM_FLAG              0x0001 | 
|  | #define DSP_DATA_BLOCK_DWORD_FLAG           0x0002 | 
|  | #define DSP_DATA_BLOCK_RESOLVE_FLAG         0x0004 | 
|  | #define DSP_RELOC_NONE                      0x00 | 
|  | #define DSP_RELOC_SEGMENT_MASK              0x3f | 
|  | #define DSP_RELOC_TYPE_MASK                 0xc0 | 
|  | #define DSP_RELOC_TYPE_0                    0x00  /* relocation of address in DM word / high part of PM word */ | 
|  | #define DSP_RELOC_TYPE_1                    0x40  /* relocation of address in low part of PM data word */ | 
|  | #define DSP_RELOC_TYPE_2                    0x80  /* relocation of address in standard command */ | 
|  | #define DSP_RELOC_TYPE_3                    0xc0  /* relocation of address in call/jump on flag in */ | 
|  | #define DSP_COMBIFILE_FORMAT_IDENTIFICATION_SIZE 48 | 
|  | #define DSP_COMBIFILE_FORMAT_VERSION_BCD    0x0100 | 
|  | #define DSP_FILE_FORMAT_IDENTIFICATION_SIZE 48 | 
|  | #define DSP_FILE_FORMAT_VERSION_BCD         0x0100 | 
|  | typedef struct tag_dsp_combifile_header | 
|  | { | 
|  | char                  format_identification[DSP_COMBIFILE_FORMAT_IDENTIFICATION_SIZE]; | 
|  | word                  format_version_bcd; | 
|  | word                  header_size; | 
|  | word                  combifile_description_size; | 
|  | word                  directory_entries; | 
|  | word                  directory_size; | 
|  | word                  download_count; | 
|  | word                  usage_mask_size; | 
|  | } t_dsp_combifile_header; | 
|  | typedef struct tag_dsp_combifile_directory_entry | 
|  | { | 
|  | word                  card_type_number; | 
|  | word                  file_set_number; | 
|  | } t_dsp_combifile_directory_entry; | 
|  | typedef struct tag_dsp_file_header | 
|  | { | 
|  | char                  format_identification[DSP_FILE_FORMAT_IDENTIFICATION_SIZE]; | 
|  | word                  format_version_bcd; | 
|  | word                  download_id; | 
|  | word                  download_flags; | 
|  | word                  required_processing_power; | 
|  | word                  interface_channel_count; | 
|  | word                  header_size; | 
|  | word                  download_description_size; | 
|  | word                  memory_block_table_size; | 
|  | word                  memory_block_count; | 
|  | word                  segment_table_size; | 
|  | word                  segment_count; | 
|  | word                  symbol_table_size; | 
|  | word                  symbol_count; | 
|  | word                  total_data_size_dm; | 
|  | word                  data_block_count_dm; | 
|  | word                  total_data_size_pm; | 
|  | word                  data_block_count_pm; | 
|  | } t_dsp_file_header; | 
|  | typedef struct tag_dsp_memory_block_desc | 
|  | { | 
|  | word                  alias_memory_block; | 
|  | word                  memory_type; | 
|  | word                  address; | 
|  | word                  size;             /* DSP words */ | 
|  | } t_dsp_memory_block_desc; | 
|  | typedef struct tag_dsp_segment_desc | 
|  | { | 
|  | word                  memory_block; | 
|  | word                  attributes; | 
|  | word                  base; | 
|  | word                  size; | 
|  | word                  alignment;        /* ==0 -> no other legal start address than base */ | 
|  | } t_dsp_segment_desc; | 
|  | typedef struct tag_dsp_symbol_desc | 
|  | { | 
|  | word                  symbol_id; | 
|  | word                  segment; | 
|  | word                  offset; | 
|  | word                  size;             /* DSP words */ | 
|  | } t_dsp_symbol_desc; | 
|  | typedef struct tag_dsp_data_block_header | 
|  | { | 
|  | word                  attributes; | 
|  | word                  segment; | 
|  | word                  offset; | 
|  | word                  size;             /* DSP words */ | 
|  | } t_dsp_data_block_header; | 
|  | typedef struct tag_dsp_download_desc | 
|  | { | 
|  | word                  download_id; | 
|  | word                  download_flags; | 
|  | word                  required_processing_power; | 
|  | word                  interface_channel_count; | 
|  | word                  excess_header_size; | 
|  | word                  memory_block_count; | 
|  | word                  segment_count; | 
|  | word                  symbol_count; | 
|  | word                  data_block_count_dm; | 
|  | word                  data_block_count_pm; | 
|  | byte *p_excess_header_data; | 
|  | char *p_download_description; | 
|  | t_dsp_memory_block_desc *p_memory_block_table; | 
|  | t_dsp_segment_desc *p_segment_table; | 
|  | t_dsp_symbol_desc *p_symbol_table; | 
|  | word *p_data_blocks_dm; | 
|  | word *p_data_blocks_pm; | 
|  | } t_dsp_desc; | 
|  | typedef struct tag_dsp_portable_download_desc /* be sure to keep native alignment for MAESTRA's */ | 
|  | { | 
|  | word                  download_id; | 
|  | word                  download_flags; | 
|  | word                  required_processing_power; | 
|  | word                  interface_channel_count; | 
|  | word                  excess_header_size; | 
|  | word                  memory_block_count; | 
|  | word                  segment_count; | 
|  | word                  symbol_count; | 
|  | word                  data_block_count_dm; | 
|  | word                  data_block_count_pm; | 
|  | dword                 p_excess_header_data; | 
|  | dword                 p_download_description; | 
|  | dword                 p_memory_block_table; | 
|  | dword                 p_segment_table; | 
|  | dword                 p_symbol_table; | 
|  | dword                 p_data_blocks_dm; | 
|  | dword                 p_data_blocks_pm; | 
|  | } t_dsp_portable_desc; | 
|  | #define DSP_DOWNLOAD_INDEX_KERNEL               0 | 
|  | #define DSP30TX_DOWNLOAD_INDEX_KERNEL           1 | 
|  | #define DSP30RX_DOWNLOAD_INDEX_KERNEL           2 | 
|  | #define DSP_MAX_DOWNLOAD_COUNT                  64 | 
|  | #define DSP_DOWNLOAD_MAX_SEGMENTS         16 | 
|  | #define DSP_UDATA_REQUEST_RECONFIGURE     0 | 
|  | /* | 
|  | parameters: | 
|  | <word> reconfigure delay (in 8kHz samples) | 
|  | <word> reconfigure code | 
|  | <byte> reconfigure hdlc preamble flags | 
|  | */ | 
|  | #define DSP_RECONFIGURE_TX_FLAG           0x8000 | 
|  | #define DSP_RECONFIGURE_SHORT_TRAIN_FLAG  0x4000 | 
|  | #define DSP_RECONFIGURE_ECHO_PROTECT_FLAG 0x2000 | 
|  | #define DSP_RECONFIGURE_HDLC_FLAG         0x1000 | 
|  | #define DSP_RECONFIGURE_SYNC_FLAG         0x0800 | 
|  | #define DSP_RECONFIGURE_PROTOCOL_MASK     0x00ff | 
|  | #define DSP_RECONFIGURE_IDLE              0 | 
|  | #define DSP_RECONFIGURE_V25               1 | 
|  | #define DSP_RECONFIGURE_V21_CH2           2 | 
|  | #define DSP_RECONFIGURE_V27_2400          3 | 
|  | #define DSP_RECONFIGURE_V27_4800          4 | 
|  | #define DSP_RECONFIGURE_V29_7200          5 | 
|  | #define DSP_RECONFIGURE_V29_9600          6 | 
|  | #define DSP_RECONFIGURE_V33_12000         7 | 
|  | #define DSP_RECONFIGURE_V33_14400         8 | 
|  | #define DSP_RECONFIGURE_V17_7200          9 | 
|  | #define DSP_RECONFIGURE_V17_9600          10 | 
|  | #define DSP_RECONFIGURE_V17_12000         11 | 
|  | #define DSP_RECONFIGURE_V17_14400         12 | 
|  | /* | 
|  | data indications if transparent framer | 
|  | <byte> data 0 | 
|  | <byte> data 1 | 
|  | ... | 
|  | data indications if HDLC framer | 
|  | <byte> data 0 | 
|  | <byte> data 1 | 
|  | ... | 
|  | <byte> CRC 0 | 
|  | <byte> CRC 1 | 
|  | <byte> preamble flags | 
|  | */ | 
|  | #define DSP_UDATA_INDICATION_SYNC         0 | 
|  | /* | 
|  | returns: | 
|  | <word> time of sync (sampled from counter at 8kHz) | 
|  | */ | 
|  | #define DSP_UDATA_INDICATION_DCD_OFF      1 | 
|  | /* | 
|  | returns: | 
|  | <word> time of DCD off (sampled from counter at 8kHz) | 
|  | */ | 
|  | #define DSP_UDATA_INDICATION_DCD_ON       2 | 
|  | /* | 
|  | returns: | 
|  | <word> time of DCD on (sampled from counter at 8kHz) | 
|  | <byte> connected norm | 
|  | <word> connected options | 
|  | <dword> connected speed (bit/s) | 
|  | */ | 
|  | #define DSP_UDATA_INDICATION_CTS_OFF      3 | 
|  | /* | 
|  | returns: | 
|  | <word> time of CTS off (sampled from counter at 8kHz) | 
|  | */ | 
|  | #define DSP_UDATA_INDICATION_CTS_ON       4 | 
|  | /* | 
|  | returns: | 
|  | <word> time of CTS on (sampled from counter at 8kHz) | 
|  | <byte> connected norm | 
|  | <word> connected options | 
|  | <dword> connected speed (bit/s) | 
|  | */ | 
|  | #define DSP_CONNECTED_NORM_UNSPECIFIED      0 | 
|  | #define DSP_CONNECTED_NORM_V21              1 | 
|  | #define DSP_CONNECTED_NORM_V23              2 | 
|  | #define DSP_CONNECTED_NORM_V22              3 | 
|  | #define DSP_CONNECTED_NORM_V22_BIS          4 | 
|  | #define DSP_CONNECTED_NORM_V32_BIS          5 | 
|  | #define DSP_CONNECTED_NORM_V34              6 | 
|  | #define DSP_CONNECTED_NORM_V8               7 | 
|  | #define DSP_CONNECTED_NORM_BELL_212A        8 | 
|  | #define DSP_CONNECTED_NORM_BELL_103         9 | 
|  | #define DSP_CONNECTED_NORM_V29_LEASED_LINE  10 | 
|  | #define DSP_CONNECTED_NORM_V33_LEASED_LINE  11 | 
|  | #define DSP_CONNECTED_NORM_TFAST            12 | 
|  | #define DSP_CONNECTED_NORM_V21_CH2          13 | 
|  | #define DSP_CONNECTED_NORM_V27_TER          14 | 
|  | #define DSP_CONNECTED_NORM_V29              15 | 
|  | #define DSP_CONNECTED_NORM_V33              16 | 
|  | #define DSP_CONNECTED_NORM_V17              17 | 
|  | #define DSP_CONNECTED_OPTION_TRELLIS        0x0001 | 
|  | /*---------------------------------------------------------------------------*/ | 
|  | extern char *dsp_read_file(OsFileHandle *fp, | 
|  | word card_type_number, | 
|  | word *p_dsp_download_count, | 
|  | t_dsp_desc *p_dsp_download_table, | 
|  | t_dsp_portable_desc *p_dsp_portable_download_table); | 
|  | /*---------------------------------------------------------------------------*/ | 
|  | #endif /* DSP_DEFS_H_ */ |