view src/cs/services/audio/audio_messages_i.h @ 275:79cfefc1e2b4

audio mode load: gracefully handle mode files of wrong AEC version Unfortunately our change of enabling L1_NEW_AEC (which is necessary in order to bring our Calypso ARM fw into match with the underlying DSP reality) brings along a change in the audio mode file binary format and file size - all those new tunable AEC parameters do need to be stored somewhere, after all. But we already have existing mode files in the old format, and setting AEC config to garbage when loading old audio modes (which is what would happen without the present change) is not an appealing proposition. The solution implemented in the present change is as follows: the audio mode loading code checks the file size, and if it differs from the active version of T_AUDIO_MODE, the T_AUDIO_AEC_CFG structure is cleared - set to the default (disabled AEC) for the compiled type of AEC. We got lucky in that this varying T_AUDIO_AEC_CFG structure sits at the end of T_AUDIO_MODE!
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 30 Jul 2021 02:55:48 +0000
parents 4e78acac3d88
children
line wrap: on
line source

/****************************************************************************/
/*                                                                          */
/*  File Name:  audio_messages_i.h                                          */
/*                                                                          */
/*  Purpose:  Internal messages used by AUDIO instance                      */
/*                                                                          */
/*                                                                          */
/*  Version   0.1                                                           */
/*                                                                          */
/*  Date        Modification                                                */
/*  ------------------------------------                                    */
/*  18/05/2001  Create                                                      */
/*                                                                          */
/*  Author      Francois Mazard - Stephanie Gerthoux                        */
/*                                                                          */
/*                                                                          */
/* (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved*/
/****************************************************************************/

#include "rv/rv_defined_swe.h"
#ifdef RVM_AUDIO_MAIN_SWE
  #ifndef __AUDIO_MESSAGES_I_H_
    #define __AUDIO_MESSAGES_I_H_

    #include "l1_confg.h"

    #include "ffs/ffs_api.h"

    #ifdef __cplusplus
    extern "C"
    {
    #endif

    /******************************* KEY BEEP *****************************************/
    #if (KEYBEEP)
      /* Entity->Audio event */
      #define AUDIO_KEYBEEP_START_REQ                       (0x0001 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                  os_hdr;
        T_AUDIO_KEYBEEP_PARAMETER keybeep_parameter;
        T_RV_RETURN               return_path;
      } T_AUDIO_KEYBEEP_START;

      /* Entity->Audio event */
      #define AUDIO_KEYBEEP_STOP_REQ                        (0x0002 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                  os_hdr;
        T_RV_RETURN               return_path;
      } T_AUDIO_KEYBEEP_STOP;
    #endif /* #if (KEYBEEP) */

    /******************************* TONES *****************************************/
    #if (TONE)
      /* Entity->Audio event */
      #define AUDIO_TONES_START_REQ                       (0x0003 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                  os_hdr;
        T_AUDIO_TONES_PARAMETER   tones_parameter;
        T_RV_RETURN               return_path;
      } T_AUDIO_TONES_START;

      /* Entity->Audio event */
      #define AUDIO_TONES_STOP_REQ                        (0x0004 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                  os_hdr;
        T_RV_RETURN               return_path;
      } T_AUDIO_TONES_STOP;
    #endif

    /******************************* DRIVER ****************************************/
    #define AUDIO_DRIVER_START_SESSION                    (0x0005 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
    typedef struct
    {
      T_RV_HDR                      os_hdr;
      UINT8                         channel_id;
      T_RV_RETURN                   return_path;
    } T_AUDIO_DRIVER_HANDLE_SESSION;

    #define AUDIO_DRIVER_STOP_SESSION                     (0x0006 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)

    #define AUDIO_DRIVER_FREE_SESSION                     (0x0007 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)

    /******************************* MELODY_E1 *****************************************/
    #if (MELODY_E1)
      /* Entity->Audio event */
      #define AUDIO_MELODY_E1_START_REQ                       (0x0008 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                      os_hdr;
        T_AUDIO_MELODY_E1_PARAMETER   melody_E1_parameter;
        T_FFS_FD                    audio_ffs_fd;
        T_RV_RETURN                   return_path;
      } T_AUDIO_MELODY_E1_START;

      /* Entity->Audio event */
      #define AUDIO_MELODY_E1_STOP_REQ                        (0x0009 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                  os_hdr;
        char         melody_name[AUDIO_PATH_NAME_MAX_SIZE];       /* File name of the melody */
        T_RV_RETURN               return_path;
      } T_AUDIO_MELODY_E1_STOP;

    #endif

    /******************************* MELODY_E2 *****************************************/
    #if (MELODY_E2)
      /* Entity->Audio event */
      #define AUDIO_MELODY_E2_START_REQ                       (0x000A | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                      os_hdr;
        T_AUDIO_MELODY_E2_PARAMETER   melody_E2_parameter;
        T_FFS_FD                      audio_E2_ffs_fd;
        T_RV_RETURN                   return_path;
      } T_AUDIO_MELODY_E2_START;

      /* Entity->Audio event */
      #define AUDIO_MELODY_E2_STOP_REQ                        (0x000B | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                  os_hdr;
        char                      melody_E2_name[AUDIO_PATH_NAME_MAX_SIZE];
                                  /* File name of the melody */
        T_RV_RETURN               return_path;
      } T_AUDIO_MELODY_E2_STOP;

    #endif


    /******************************* FFS interface ************************************/
    #if (MELODY_E1) || (MELODY_E2) || (VOICE_MEMO)
      /* FFS FLASH to RAM interface */
      /* start message */
      #define AUDIO_FFS_FLASH_2_RAM_START_REQ                 (0x000C | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR  os_hdr;
        BOOLEAN   loop;
        UINT16    initial_size;
        UINT8     session_id;
        T_FFS_FD  audio_ffs_fd;
      } T_AUDIO_FFS_FLASH_2_RAM_START;

      /* start confirmation message */
      #define AUDIO_FFS_INIT_DONE                             (0x000D | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)

      typedef struct
      {
        T_RV_HDR  os_hdr;
        UINT8  session_id;
        UINT8  channel_id;
      } T_AUDIO_FFS_INIT;

      /* stop message */
      #define AUDIO_FFS_STOP_REQ                              (0x000E | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR  os_hdr;
        UINT8     session_id;
      } T_AUDIO_FFS_STOP_REQ;

      /* stop confirmation message */
      #define AUDIO_FFS_STOP_CON                              (0x000F | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR  os_hdr;
        UINT8     session_id;
      } T_AUDIO_FFS_STOP_CON;

      /* FFS RAM to FLASH interface */
      /* start message */
      #define AUDIO_FFS_RAM_2_FLASH_START_REQ                 (0x0010 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR  os_hdr;
        UINT16    initial_size;
        UINT8     session_id;
        T_FFS_FD  audio_ffs_fd;
      } T_AUDIO_FFS_RAM_2_FLASH_START;
    #endif

   /******************************* VOICE MEMO *****************************************/
    #if (VOICE_MEMO)

      /* ------------------------------- */
      /*      Voice Memo PLAY            */
      /* ------------------------------- */
      /* Entity->Audio event */
      #define AUDIO_VM_PLAY_START_REQ                       (0x0011 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                      os_hdr;
        T_FFS_FD                    audio_ffs_fd;
        T_RV_RETURN                   return_path;
      } T_AUDIO_VM_PLAY_START;

      /* Entity->Audio event */
      #define AUDIO_VM_PLAY_STOP_REQ                        (0x0012 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                  os_hdr;
        T_RV_RETURN               return_path;
      } T_AUDIO_VM_PLAY_STOP;

      /* ------------------------------- */
      /*      Voice Memo RECORD          */
      /* ------------------------------- */
      /* Entity->Audio event */
      #define AUDIO_VM_RECORD_START_REQ                     (0x0013 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                      os_hdr;
        UINT32                        memo_duration;
        BOOL                          compression_mode;
        UINT16                        microphone_gain;
        UINT16                        network_gain;
        T_FFS_FD                    audio_ffs_fd;
        T_AUDIO_TONES_PARAMETER       tones_parameter;
        T_RV_RETURN                   return_path;
      } T_AUDIO_VM_RECORD_START;

      /* Entity->Audio event */
      #define AUDIO_VM_RECORD_STOP_REQ                      (0x0014 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                  os_hdr;
        T_RV_RETURN               return_path;
      } T_AUDIO_VM_RECORD_STOP;
    #endif

    #if (L1_VOICE_MEMO_AMR)
      #define AUDIO_DRIVER_INIT_VM_AMR_RECORD_SESSION       (0x0015 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                  os_hdr;
        UINT32                    memo_duration;
        BOOL                      compression_mode;
        UINT16                    microphone_gain;
        UINT8                     amr_vocoder;
        T_AUDIO_DRIVER_PARAMETER  driver_parameter;
        T_RV_RETURN               return_path;
      } T_AUDIO_DRIVER_INIT_VM_AMR_RECORD_SESSION;

      #define AUDIO_DRIVER_INIT_VM_AMR_PLAY_SESSION       (0x0016 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                      os_hdr;
        T_AUDIO_DRIVER_PARAMETER      driver_parameter;
        T_RV_RETURN                   return_path;
      } T_AUDIO_DRIVER_INIT_VM_AMR_PLAY_SESSION;

      #define AUDIO_VM_AMR_RECORD_TO_FFS_START_REQ         (0x0017 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                      os_hdr;
        UINT32                        memo_duration;
        BOOL                          compression_mode;
        UINT16                        microphone_gain;
        UINT8                         amr_vocoder;
        T_FFS_FD                      audio_ffs_fd;
        T_RV_RETURN                   return_path;
      } T_AUDIO_VM_AMR_RECORD_TO_FFS_START;

      #define AUDIO_VM_AMR_RECORD_TO_RAM_START_REQ         (0x0018 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                      os_hdr;
        UINT32                        memo_duration;
        BOOL                          compression_mode;
        UINT16                        microphone_gain;
        UINT8                         amr_vocoder;
        UINT8*                        p_buffer;
        T_RV_RETURN                   return_path;
      } T_AUDIO_VM_AMR_RECORD_TO_RAM_START;

      #define AUDIO_VM_AMR_PLAY_FROM_FFS_START_REQ           (0x0019 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                      os_hdr;
        T_FFS_FD                      audio_ffs_fd;
        T_RV_RETURN                   return_path;
      } T_AUDIO_VM_AMR_PLAY_FROM_FFS_START;

      #define AUDIO_VM_AMR_PLAY_FROM_RAM_START_REQ           (0x001A | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                      os_hdr;
        UINT8                         *p_buffer;
		UINT16                        buffer_size;
        T_RV_RETURN                   return_path;
      } T_AUDIO_VM_AMR_PLAY_FROM_RAM_START;

      #define AUDIO_VM_AMR_RECORD_TO_FFS_STOP_REQ           (0x001B | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      #define AUDIO_VM_AMR_RECORD_TO_RAM_STOP_REQ           (0x001C | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                      os_hdr;
      } T_AUDIO_VM_AMR_RECORD_STOP;

      #define AUDIO_VM_AMR_PLAY_FROM_FFS_STOP_REQ             (0x001D | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      #define AUDIO_VM_AMR_PLAY_FROM_RAM_STOP_REQ             (0x001E | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                      os_hdr;
      } T_AUDIO_VM_AMR_PLAY_STOP;


      #define AUDIO_MEM_START_REQ                       (0x001F | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                      os_hdr;
        UINT8                         channel_id;
        UINT8                         session_id;
      #if (AUDIO_NEW_FFS_MANAGER)
        T_FFS_FD                      audio_ffs_fd;
      #endif
      #if (AUDIO_RAM_MANAGER)
        UINT8                         *audio_ram_fd;
        UINT16                        audio_ram_size;
      #endif
        UINT16                        size;
      } T_AUDIO_MEM_START;

      #define AUDIO_MEM_STOP_REQ                         (0x0020 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                      os_hdr;
        UINT8                         channel_id;
        T_RV_RETURN                   return_path;
      } T_AUDIO_MEM_STOP;

      #define AUDIO_MEM_STATUS_MSG                       (0x0021 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                      os_hdr;
        INT8                          status;
        UINT8                         status_type;
        UINT8                         channel_id;
        UINT32                        recorded_size;
      } T_AUDIO_MEM_STATUS;

    #endif

   /******************************* SPEECH RECO *****************************************/
    #if (SPEECH_RECO)
      /* ------------------------------- */
      /*      Speech Reco enrollment     */
      /* ------------------------------- */
      /* Entity->Audio event */
      #define AUDIO_SR_ENROLL_START_REQ                     (0x0022 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                      os_hdr;
        T_FFS_FD                    voice_ffs_fd;
        T_FFS_FD                    sr_ffs_fd;
        T_RV_RETURN                   return_path;
      } T_AUDIO_SR_ENROLL_START;

      /* Entity->Audio event */
      #define AUDIO_SR_ENROLL_STOP_REQ                      (0x0023 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                      os_hdr;
        T_RV_RETURN                   return_path;
      } T_AUDIO_SR_ENROLL_STOP;

      /* ------------------------------- */
      /*      Speech Reco update         */
      /* ------------------------------- */
      /* Entity->Audio event */
      #define AUDIO_SR_UPDATE_START_REQ                     (0x0024 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                      os_hdr;
        UINT8                         vocabulary_size;
        UINT8                         model_index;
        void                          *p_database;
        BOOL                          record_speech;
        T_RV_RETURN                   return_path;
      } T_AUDIO_SR_UPDATE_START;

      /* Entity->Audio event */
      #define AUDIO_SR_UPDATE_STOP_REQ                      (0x0025 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                      os_hdr;
        T_RV_RETURN                   return_path;
      } T_AUDIO_SR_UPDATE_STOP;

      /* ------------------------------- */
      /*      Speech Reco reco           */
      /* ------------------------------- */
      /* Entity->Audio event */
      #define AUDIO_SR_RECO_START_REQ                       (0x0026 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                      os_hdr;
        UINT8                         vocabulary_size;
        void                          *p_database;
        T_RV_RETURN                   return_path;
      } T_AUDIO_SR_RECO_START;

      /* Entity->Audio event */
      #define AUDIO_SR_RECO_STOP_REQ                        (0x0027 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
      typedef struct
      {
        T_RV_HDR                      os_hdr;
        T_RV_RETURN                   return_path;
      } T_AUDIO_SR_RECO_STOP;
    #endif /* SPEECH_RECO */

    /******************************* AUDIO_MODE *****************************************/
    /* ------------------------------- */
    /*      Full access write          */
    /* ------------------------------- */
    /* Entity->Audio event */
    #define AUDIO_MODE_WRITE_REQ                       (0x0028 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
    typedef struct
    {
      T_RV_HDR                      os_hdr;
      T_AUDIO_FULL_ACCESS_WRITE     audio_parameter;
      T_RV_RETURN                   return_path;
    } T_AUDIO_MODE_FULL_ACCESS_WRITE_REQ;

    /* ------------------------------- */
    /*      save audio mode            */
    /* ------------------------------- */
    /* Entity->Audio event */
    #define AUDIO_MODE_SAVE_REQ                         (0x0029 | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
    typedef struct
    {
      T_RV_HDR                      os_hdr;
      T_FFS_FD                      audio_ffs_fd;
      T_FFS_FD                      audio_volume_ffs_fd;
      T_RV_RETURN                   return_path;
    } T_AUDIO_MODE_SAVE_REQ;

    /* ------------------------------- */
    /*      load audio mode            */
    /* ------------------------------- */
    /* Entity->Audio event */
    #define AUDIO_MODE_LOAD_REQ                         (0x002A | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
    typedef struct
    {
      T_RV_HDR                      os_hdr;
      T_FFS_FD                      audio_ffs_fd;
      T_FFS_FD                      audio_volume_ffs_fd;
      char                          audio_volume_path_name[AUDIO_PATH_NAME_MAX_SIZE];
      T_RV_RETURN                   return_path;
    } T_AUDIO_MODE_LOAD_REQ;

    /* ------------------------------- */
    /*      audio speaker volume       */
    /* ------------------------------- */
    /* Entity->Audio event */
    #define AUDIO_SPEAKER_VOLUME_REQ                    (0x002B | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
    typedef struct
    {
      T_RV_HDR                      os_hdr;
      T_AUDIO_SPEAKER_VOLUME        volume;
      T_RV_RETURN                   return_path;
    } T_AUDIO_SPEAKER_VOLUME_REQ;


    /* -------------------------------------------------------- */
    /* WARNING: TTY Messages ID are defined as Audio messages.  */
    /* To avoid any conflict have a look in tty_i.h & tty_api.h */
    /* -------------------------------------------------------- */


   /******************************* MIDI *****************************************/
   /* ------------------- */
   /*      MIDI           */
   /* ------------------- */
   /* Entity->Audio event */
   #define AUDIO_DRIVER_INIT_MIDI_SESSION            (0x002C | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
   typedef struct
   {
     T_RV_HDR                      os_hdr;
     T_AUDIO_DRIVER_PARAMETER      driver_parameter;
     T_RV_RETURN                   return_path;
   } T_AUDIO_DRIVER_INIT_MIDI_SESSION;

   #define AUDIO_MIDI_START_REQ                      (0x002D | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
   typedef struct
   {
     T_RV_HDR                      os_hdr;
     T_FFS_FD                      audio_ffs_fd;
     T_RV_RETURN                   return_path;
   } T_AUDIO_MIDI_START;

   #define AUDIO_MIDI_STOP_REQ                       (0x002E | AUDIO_EVENT_INTERN | AUDIO_EVENTS_MASK)
   typedef struct
   {
     T_RV_HDR                      os_hdr;
     T_RV_RETURN                   return_path;
   } T_AUDIO_MIDI_STOP;

  #ifdef __cplusplus
  }
  #endif

  #endif /* __AUDIO_MESSAGES_I_ */

#endif /* #ifdef RVM_AUDIO_MAIN_SWE */