view src/condat3/com/inc/macdef.h @ 673:62a5285e014a

Lorekeeping: allow tpudrv-leonardo.lib on Leonardo/Tango Back in 2015 the Mother's idea was to produce a FreeCalypso development board that would be a clone of TI Leonardo, including the original quadband RFFE; one major additional stipulation was that this board needed to be able to run original unmodified TCS211-20070608 firmware with all blobs intact, with only minimal binary patches to main.lib and tpudrv.lib. The necessary patched libs were produced at that time in the tcs211-patches repository. That plan was changed and we produced FCDEV3B instead, with Openmoko's triband RFFE instead of Leonardo quadband, but when FC Magnetite started in 2016, a TPUDRV_blob= provision was still made, allowing the possibility of patching OM's tpudrv.lib for a restored Leonardo RFFE. Now in 2020 we have FC Tango which is essentially a verbatim clone of Leonardo core, including the original quadband RFFE. We have also deblobbed our firmware so much that we have absolutely no real need for a blob version of tpudrv.lib - but I thought it would be neat to put the ancient TPUDRV_blob= mechanism (classic config) to its originally intended use, just for the heck of it.
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 29 May 2020 03:55:36 +0000
parents c8bd5a927942
children
line wrap: on
line source

/* 
+----------------------------------------------------------------------------- 
|  Project :  
|  Modul   :  
+----------------------------------------------------------------------------- 
|  Copyright 2002 Texas Instruments Berlin, AG 
|                 All rights reserved. 
| 
|                 This file is confidential and a trade secret of Texas 
|                 Instruments Berlin, AG 
|                 The receipt of or possession of this file does not convey 
|                 any rights to reproduce or disclose its contents or to 
|                 manufacture, use, or sell anything it may describe, in 
|                 whole, or in part, without the specific written consent of 
|                 Texas Instruments Berlin, AG. 
+----------------------------------------------------------------------------- 
|  Purpose :  Contains macros for the unified implementation of the
|             Protocol Stack
+----------------------------------------------------------------------------- 
*/ 

#ifndef MACDEF_H
#define MACDEF_H

/*
 * Get/Set state for one incarnation. Init state has to be called first.
 */
#undef GET_STATE
#undef SET_STATE

#ifdef TRACE_STATE
  #define INIT_STATE(P,S)     ENTITY_DATA->P name = SERVICE_NAME_##P;         \
                              ENTITY_DATA->P state = S;                       \
                              ENTITY_DATA->P state_name = #S;

  #define SET_STATE(P,S)      {ENTITY_DATA->P state = S;                      \
                               vsi_o_ttrace (VSI_CALLER                       \
                                             TC_STATE,                        \
                                             #P ":%s -> " #S,                 \
                                             ENTITY_DATA->P state_name );     \
                               ENTITY_DATA->P state_name = #S;}

  #define GET_STATE(P)        (vsi_o_ttrace (VSI_CALLER                       \
                                             TC_STATE,                        \
                                #P ":%s", ENTITY_DATA->P state_name ),        \
                                ENTITY_DATA->P state)

#else
  #define INIT_STATE(P,S)     {ENTITY_DATA->P state = S;}
  #define SET_STATE(P,S)      {ENTITY_DATA->P state = S;}
  #define GET_STATE(P)        (ENTITY_DATA->P state)
#endif /* TRACE_STATE */


/*
 * MFREE_DESC() is used to free the given descriptor, along with all following
 * descriptors.
 *
 * Parameters:  d  -- "pointer" to the descriptor, either of type T_desc *, or
 *                    an ULONG
 */
#define MFREE_DESC(d)         { T_desc *desc = (T_desc *)d;                   \
                                T_desc *next_desc;                            \
                                while (desc NEQ NULL)                         \
                                {                                             \
                                  next_desc = (T_desc *)desc->next;           \
                                  MFREE (desc);                               \
                                  desc = next_desc;                           \
                                }                                             \
                              }


/*
 * PFREE_DESC() is used to free the given primitive, along with all
 * descriptors in the descriptor list of the primitive.
 *
 * Parameters:  p  -- pointer to the primitive containing a descriptor list
 *                    (if it is an ULONG, it has to be casted to the pointer
 *                    because the type cannot be determined by the macro!)
 */
#define PFREE_DESC(p)         { MFREE_DESC ((p)->desc_list.first);            \
                                PFREE ((p));                                  \
                              }


/*
 * MFREE_DESC() is used to free the given descriptor, along with all following
 * descriptors.
 *
 * Parameters:  d  -- "pointer" to the descriptor, either of type T_desc *, or
 *                    an ULONG
 */
#define MFREE_DESC2(d)        { T_desc2 *desc2 = (T_desc2 *)d;                   \
                                T_desc2 *next_desc2;                            \
                                while (desc2 NEQ NULL)                         \
                                {                                             \
                                  next_desc2 = (T_desc2 *)desc2->next;           \
                                  MFREE (desc2);                               \
                                  desc2 = next_desc2;                           \
                                }                                             \
                              }


/*
 * PFREE_DESC() is used to free the given primitive, along with all
 * descriptors in the descriptor list of the primitive.
 *
 * Parameters:  p  -- pointer to the primitive containing a descriptor list
 *                    (if it is an ULONG, it has to be casted to the pointer
 *                    because the type cannot be determined by the macro!)
 */
#define PFREE_DESC2(p)        { MFREE_DESC2 ((p)->desc_list2.first);            \
                                PFREE ((p));                                   \
                              }


#endif /* !MACDEF_H */