/* * Copyright (c) Dialogic (R) 2009 - 2010 * This source file is supplied for the use with Eicon Networks range of DIVA Server Adapters. * Dialogic (R) File Revision : 1.9 * 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 __DIVA_SPI_DESCRIPTOR_H__ #define __DIVA_SPI_DESCRIPTOR_H__ #define MAX_SPI_DESCRIPTOR_LENGTH (4*1024) #define MAX_XCONN_PER_DSP_DESCRIPTORS 8 #define SMALL_FLAT_RX_BUFFER_LENGTH 128 /* SPI descriptor is always transferred in two parts: byte* msg; xmit(&msg[4], length-4); xmit(msg, 4); The second transfer is used as indication about end of the descriptor transfer. */ typedef struct _diva_spi_msg_hdr { byte length_lo; /* Total transfer length, includes the the length of the header, lo byte */ byte length_hi; /* Total transfer length, includes the length of the header, h byte */ byte Id; /* IDI Id. 0xff in case of the system message */ byte Ind; /* Ind */ } diva_spi_msg_hdr_t; typedef struct _diva_spi_msg { diva_spi_msg_hdr_t hdr; byte data[MAX_SPI_DESCRIPTOR_LENGTH-sizeof(diva_spi_msg_hdr_t)]; } diva_spi_msg_t; /* System messages: if Id == 0xff then system message if (length_hi & 0x80) then system message is chained after the message Messages: byte - message type byte - message length without this byte and the length byte body - sequence of bytes, depends on the type of message */ /* Used for comminication with monitor task */ typedef struct _diva_dsp_monitor_message_hdr { byte length_lo; /* Total transfer length, includes the the length of the header, lo byte */ byte length_hi; /* Total transfer length, includes the length of the header, h byte */ byte message_lo; byte message_hi; } diva_dsp_monitor_message_hdr_t; typedef struct _diva_dsp_monitor_message { diva_dsp_monitor_message_hdr_t hdr; byte data[MAX_SPI_DESCRIPTOR_LENGTH-sizeof(diva_dsp_monitor_message_hdr_t)]; } diva_dsp_monitor_message_t; /* Format of the request: length_lo length_hi - set to "data_length + 5" Id Req - Stored in the Ind field RegCh - Req Ch stored in the first byte of data field data - first byte of data */ /* Format of the return code without extended info: length_lo length_hi - set to 6 Id Rc - Stored in the Ind field RcCh - RcCh stored in the first byte of data field type - Type. Set to zero for RC, stored in the second byte of data field Format of the return code with extended info: length_lo length_hi - set to 14 Id Rc - Stored in the Ind field RcCh - RcCh stored in the first byte of data field type - Type. Set to zero for RC, stored in the second byte of data field dword - extended info type (bytes 2,3,4,5 of data field) dword - extended info (bytes 6,7,8,9 of data field) */ /* Format of the indication: length_lo length_hi - set to "data_lengt + 6" Id Ind - Stored in the Ind field IndCh - IndCh stored in the first byte of data field type - Type. Set to one for IND, stored in the second byte of data field data - first byte of data, starts at third data byte */ typedef struct _diva_xconn_msg_hdr { word counter; word length; } diva_xconn_msg_hdr_t; typedef struct _diva_xconn_msg { diva_xconn_msg_hdr_t hdr; byte data[MAX_SPI_DESCRIPTOR_LENGTH-sizeof(diva_xconn_msg_hdr_t)]; } diva_xconn_msg_t; #endif