diff L1/cust1/ind_os.c @ 0:75a11d740a02

initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 09 Jun 2016 00:02:41 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/L1/cust1/ind_os.c	Thu Jun 09 00:02:41 2016 +0000
@@ -0,0 +1,174 @@
+/************* Revision Controle System Header *************
+ *                  GSM Layer 1 software
+ * IND_OS.C
+ *
+ *        Filename ind_os.c
+ *        Version  1.1
+ *        Date     04/26/00
+ *
+ ************* Revision Controle System Header *************/
+
+
+// Nucleus include files.
+#include "nucleus.h"
+#include "tc_defs.h"
+#include "sys_types.h"
+#include "ind_os.h"
+
+#include "l1_confg.h"
+// Layer1 and debug include files.
+#include "l1_types.h"
+#include "l1_const.h"
+
+#if (L1_GTT == 1)
+  #include "l1gtt_const.h"
+  #include "l1gtt_defty.h"
+#endif
+
+#if (L1_MP3 == 1)
+  #include "l1mp3_defty.h"
+#endif
+
+#if (L1_MIDI == 1)
+  #include "l1midi_defty.h"
+#endif
+
+//#if ((ANALOG == 1) || (ANALOG == 2))
+//  #include "spi_drv.h"
+//#endif
+
+#if TESTMODE
+  #include "l1tm_defty.h"
+#endif
+
+#include "l1audio_const.h"
+#include "l1audio_cust.h"
+#include "l1audio_defty.h"
+#if (L1_MP3 == 1)
+  #include "l1mp3_defty.h"
+#endif
+#if (L1_MIDI == 1)
+  #include "l1midi_defty.h"
+#endif
+#include "l1_defty.h"
+#include "l1_msgty.h"
+#include "l1_varex.h"
+
+#if (CHIPSET == 2 || CHIPSET == 3 || CHIPSET == 4 || CHIPSET == 5 || CHIPSET == 6 || CHIPSET == 7 || CHIPSET == 8 || CHIPSET == 10 || CHIPSET == 11 || CHIPSET == 12) || (CHIPSET == 15)
+  #include "ulpd.h"
+#endif
+
+extern UWORD32    TCD_Priority_Groups;
+extern TC_HCB     *TCD_Active_HISR_Heads[TC_HISR_PRIORITIES];
+extern VOID       *TCD_Current_Thread;
+extern TC_HCB     *TCD_Active_HISR_Tails[TC_HISR_PRIORITIES];
+extern INT        TMD_Timer_State;
+extern UWORD32    TMD_Timer;               // for big sleep 
+extern TC_PROTECT TCD_System_Protect;
+
+ 
+ /*-------------------------------------------------------*/
+ /* int ind_os_sleep()                                    */
+ /*-------------------------------------------------------*/
+ /* Parameters : none                                     */
+ /* Return     :                                          */
+ /* Functionality : Suspend the thread an interval        */
+ /*                 of millisecs.                         */
+ /* Limitation :                                          */
+ /*-------------------------------------------------------*/
+
+ T_OS_RETURN  ind_os_sleep (SYS_UWORD32 millisecs)
+{
+  NU_Sleep ((SYS_UWORD32) millisecs);
+  return OS_OK;
+}
+
+
+ /*-------------------------------------------------------*/
+ /* int OS_get_inactivity_ticks()                         */
+ /*-------------------------------------------------------*/
+ /* Parameters : none                                     */
+ /* Return     : Number of ticks of inactivity            */
+ /*              0 means immediate activity planned       */
+ /*              -1 means no activity planned             */
+ /* Functionality : Evaluates the OS activity planned     */
+ /*                 by looking at ready tasks, activated  */
+ /*                HISR and the elapsed time of the timers*/
+ /* Limitation : Must be protected from H/W interrupts    */
+ /*-------------------------------------------------------*/
+ int OS_get_inactivity_ticks(void)
+ {
+  #if (CODE_VERSION != SIMULATION)
+   int i;
+
+   // Returns immediate activity if a task is ready
+   if (TCD_Priority_Groups)
+     return 0;
+
+   //for all HISR priorities
+   for (i = 0; i < TC_HISR_PRIORITIES ; i++)
+   {
+     // if no hisr of priority "i" ==> go to next priority
+     if (TCD_Active_HISR_Heads[i] == 0)
+       continue;
+
+     // the first hisr is NOT the current one (frame hisr) so it may be
+     // with other priority ==> abort
+     if (TCD_Active_HISR_Heads[i] != TCD_Current_Thread) 
+       return 0;
+
+     // the last hisr is NOT the current one (frame hisr) so there is
+     // at least another hisr with same priority ==> abort
+     if (TCD_Active_HISR_Tails[i] != TCD_Current_Thread)
+       return 0;
+
+     // the first and last hisrs are the current one (frame hisr) but
+     // there are several occurences of it ! ==> abort
+     if (  (TCD_Active_HISR_Heads[i]->tc_activation_count != 1))
+       return 0;
+   }
+
+   // Returns remaining ticks number if any timer is active
+   if (TMD_Timer_State == TM_ACTIVE)  // any active timer ?
+     return TMD_Timer;
+
+   // Returns not activity if no timer active
+   else if (TMD_Timer_State == TM_NOT_ACTIVE)
+     return -1;
+   else
+     // otherwise, returns immediate activity if a timer is expired (TM_EXPIRED)
+     return(0);
+  #else // Simulation part
+    // the L3 simulator return the FN for the next L3 message
+    UWORD32 time;
+    time = (next_message_FN() - l1s.debug_time + MAX_FN)% MAX_FN;
+    return(time);
+  #endif
+ }
+
+ /*-------------------------------------------------------*/
+ /* int OS_system_protect()                               */
+ /*-------------------------------------------------------*/
+ /* Parameters : none                                     */
+ /* Return     : The Thread Control Block of the thread   */
+ /*              which already owns the protection or     */
+ /*              0 if no protection                       */
+ /* Functionality : Checks whether the system structures  */
+ /*                 are already protected or not          */
+ /*-------------------------------------------------------*/
+ void OS_system_protect (void)
+ {
+   NU_Protect((NU_PROTECT*) &TCD_System_Protect);
+ }
+
+ /*-------------------------------------------------------*/
+ /* int OS_system_Unprotect()                             */
+ /*-------------------------------------------------------*/
+ /* Parameters : none                                     */
+ /* Return     :                                          */
+ /* Functionality : unprotect the system structures       */
+ /*-------------------------------------------------------*/
+ void OS_system_Unprotect (void)
+ {
+   NU_Unprotect();
+ }