API PARTICIPACIONES

En primer lugar, la API de gestión de la información

osal_msg_allocate () Función prototipo tarea se le asigna un búfer de mensajes, o cuando la tarea llama se llama la función, el espacio está lleno de información o información llame función de transmisión osal_msg_send () para enviar información a otras tareas búfer espacio, el espacio de amortiguación si no se está asignado, el conjunto vacío msg_ptr = NULL;
         uint8 * osal_msg_allocate (UInt16 len), se devuelve un puntero, si es devuelto está vacía, el mensaje de error de asignación de espacio de caché.

   Nota: Esta función no está disponible, la función osal_mem_alloc () se utiliza () confundirse con osal_mem_alloc asignar un búfer de transmisión de la información entre las tareas. Esta función se puede asignar un espacio de almacenamiento.

2.osal_msg_deallocate () caché de asignación de procesamiento de información. Esta función termina de procesar la información recibida a través de una llamada a una tarea.

        uint8 osal_msg_deallocate (uint8 * msg_ptr)

msg_ptr punto necesita la información del proceso de asignación de puntero en caché

El éxito; puntero información no válida; la memoria caché está en la cola.
 
 
 3. osal_msg_send () envía un comando o tarea a otro elemento de procesamiento de tareas o de datos.

uint8 osal_msg_send (uint8 destination_task, uint8 * msg_ptr)


 

4.osal_msg_receive () acepta una información de orden de trabajo llama a la función

           uint8 * osal_msg_receive (uint8 task_id)

El valor de retorno es un puntero a un buffer que contiene el mensaje o NULL si no hay ningún mensaje recibido.

5. osal_msg_find ()

osal_event_hdr_t * osal_msg_find (task_id uint8, evento uint8)

Esta función busca un mensaje de OSAL existentes coinciden con los parámetros task_id y eventos

En segundo lugar, la API de sincronización de tareas: permite a una tarea de espera para un evento que se produzca y devuelve el control durante la espera

作用: eventos establecidos para una tarea y notificar a la tarea una vez que cualquier evento se establece

1.osal_set_event (): establece las banderas de eventos para una tarea

uint8 osal_set_event (uint8 task_id, uint16 event_flag)其中event_flag es un mapa de bits de 2 bytes,每位对应一个事件
 Sólo hay un evento del sistema (SYS_EVENT_MSG), el resto de los acontecimientos / bits se definen por la tarea de recepción


En tercer lugar, la API de gestión del tiempo
Esta API permite que el temporizador para ser utilizado dentro y fuera de la tarea, que tiene un inicio y parada de una función de temporizador del temporizador puede ser ,, 1 milisegundo incrementos.
1.osal_start_timerEx () para iniciar el temporizador
uint8 osal_start_timerEx (uint8 TaskID, uint16 event_id , uint16 timeout_value);
 


Osal_start_reload_timer 2. ()
uint8 osal_start_reload_timer (uint8 TaskID, UInt16 la event_id, UInt16 a timeout_value);
  ajuste establecer un bit de evento y automáticamente contador recargar


3.osal_stop_timerEx () se ha activado para detener el temporizador
uint8 osal_stop_timerEx (uint8 task_id, uint16 event_id );

4.osal_GetSystemClock () lee el reloj del sistema
osal_GetSystemClock uint32 (void);
Valor de retorno:. El reloj del sistema en milisegundos
En cuarto lugar, la API de gestión de interrupciones: la tarea y la interfaz de interrupción externa que permite a una tarea específica asignada a cada rutina de servicio de interrupción
1. osal_int_enable () permite interrupción
uint8 osal_int_enable (uint8 interrupt_id)

2. osal_int_disable () prohíbe una interrupción
 uint8 osal_int_disable (uint8 interrupt_id)
 

 API V. Administrador de tareas: Tareas para agregar y administrar osal en cada tarea por la composición de la función de inicialización y controladores de eventos.
Las llamadas OSAL osalInitTasks () [expediente de solicitud incluido] al inicializar las tareas y el OSAL utiliza la tabla de tareas A (const pTaskEventHandlerFn tasksArr []) Procesador a llamar al evento para cada tarea (También se ofrece la aplicación de archivos).
Ejemplo de una tabla de tareas de implementación: 
 
const pTaskEventHandlerFn tasksArr [] =  

  macEventLoop, 
  nwk_event_loop, 
  Hal_ProcessEvent, 
  MT_ProcessEvent, 
  APS_event_loop, 
  ZDApp_event_loop, 
};  
const = uint8 tasksCnt la sizeof (tasksArr) / el sizeof (tasksArr [0]); número calculado de matriz de elementos
1.osal_init_system () inicializa sistema osal: en debe ser llamado antes de comenzar cualquier OSAL

uint8 osal_init_system (void) Devuelve el valor de "éxito"

La función de bucle principal 2. osal_start_system sistema de tareas ()

osal_start_system vacío (vacío)

3.osal_run_system (): void osal_run_system (void)

4.osal_self () devuelve el número de identificación de la tarea actualmente en ejecución: osal_self uint8 (void)


 En sexto lugar, la memoria de gestión de la API: sencillo sistema de asignación de almacenamiento. Permitir la asignación de memoria dinámica

1.osal_mem_alloc () es una asignación de memoria simple, si una caché de puntos para la implementación exitosa del puntero devuelto

void * osal_mem_alloc (uint16 tamaño); sin tipo puntero a una nueva área de caché se asigna

2. osal_mem_free () libera el espacio de almacenamiento asignado para preparar utilizado de nuevo, sólo se libera el espacio de almacenamiento () osal_mem_alloc asigna

osal_mem_free (void * ptr);

Siete, la API de administración de energía: Cuando OSPL de seguridad del receptor de cierre y hardware externo, y el procesador al modo de reposo, para proporcionar un método para informar a la cita con la aplicación / tarea

osal_pwrmgr_device (), osal_pwrmgr_task_state (PWRMGR_HOLD)

1. osal_pwrmgr_init (): osal_pwrmgr_init (void); no llame a esta función, ya que se ha llamado en osal_init_system () en

2. osal_pwrmgr_powerconserve (): osal_pwrmgr_powerconserve (void); entrar en el modo de apagado

No llamar a esta función, ya que se llama en el bucle principal OSAL [osal_start_system ()].

3.osal_pwrmgr_device (): osal_pwrmgr_device vacío (pwrmgr_device uint8);

Función cuando el estado de alimentación o las necesidades de suministro de energía para el cambio a la llamada, el dispositivo se pueden proporcionar para la administración de energía en estado ON / OFF, la función de control debe haber una diferencia en el centro de llamadas, tales ZDO.


4.osal_pwrmgr_task_state (): uint8 osal_pwrmgr_task_state (uint8 task_id, estado uint8);
se llama para cada tarea, si la tarea requiere la declaración de ahorro de energía, cuando se crea la tarea, el modo de ahorro de energía predeterminado, si la necesidad total de conservación de la energía, que no es necesario llamar a la función.
estado:

Valor de retorno
ocho, una memoria no volátil gestión de la API: la memoria no volátil API
función NV está diseñado para leer la entrada de cualquier tipo de datos definidos por el usuario, tales como una estructura de cola o composición, flash o EEPROM


NV Cada entrada tiene un número de identificación único, pero hay regulaciones y restricciones
 1.osal_nv_item_init (): inicializar una malla. Esta función comprueba una entrada existente, si no existe, se crea e inicializa con los datos transportados en el osal_nv_read llamada para cada entrada () o osal_nv_write antes (), esta función debe ser llamada

uint8 osal_nv_item_init (uint16 Identificación, uint16 len, void * buf); inicialización puntero de entrada de datos


2.osal_nv_read (): uint8 osal_nv_read (uint16 Identificación, uint16 offset, uint16 len, void * buf);
datos leídos desde nv. leer un artículo entero de la NV o un elemento de un elemento de indexación en el artículo con un offset. Copiar los datos a leer el búfer buf *
 


 3.osal_nv_write (): datos de escritura a la NV. uint8 osal_nv_write (uint16 Identificación, uint16 offset, uint16 len, void * buf);

escribir un artículo entero a NV o un elemento de un elemento de indexación en el artículo con un desplazamiento


4.osal_nv_delete (): eliminar la entrada de nv. uint8 osal_nv_delete (uint16 Identificación, uint16 len );
cheques Esta función una entrada existente, si es que existe, y su longitud coincide con la longitud prevista en la llamada de función , la entrada se elimina de nv. 

5.osal_nv_item_len (): uint16 osal_nv_item_len (uint16 id); conseguir una entrada de la longitud NV

6.osal_offsetof (): Esta macro calcula el tamaño de una estructura se define en la memoria de corrección (byte) osal_offsetof (tipo, miembros)
 Cálculo de parámetros El desplazamiento es útil en función de la API NV.
Nueve, simplemente NV API de almacenamiento:
. Al igual que en el OSAL sistema de memoria NV, en The el sistema de memoria NV simple del proporciona una forma para que las aplicaciones de almacén de información en al memoria del dispositivo persistentemente la ON en otra parte, que la diferencia en el sistema de memoria OSAL NV, en el la memoria NV simple sIMPLE mucho a la proporciona la API Sistema de la aplicación de archivos tamaño del código y el código de tamaño de la unidad hacia abajo Pila del AS como el Bueno, el tamaño del código de 
la OSAL el Sistema de implementación simple NV., el usuario puede leer pero no puede escribir una parte toda la entrada de la entrada.

 1.osal_snv_read (): osal_snv_read uint8 (osalSnvId_t Identificación, osalSnvLen_t len, void * pBuf); leer los datos de la nv

 2.osal_snv_write (): datos de escritura a Nv: osal_snv_write uint8 (osalSnvId_t Identificación, osalSnvLen_t len, void * pBuf);

 Ten, sistema de reloj OSAL: proporcionar un método y un aparato para mantener el tiempo de la fecha, este sistema mantendrá el número de segundos desde 0 horas, 0 minutos, 0 segundos a 1 de enero las 2000 UTC, dos tipos de datos se definen en la estructura o OSAL_Clock .h en
typedef UInt32 ya sea UTCTime; // Se utiliza con el ser, la Además, el presente no mantiene Característica dormir Dispositivos Tiempo para
typedef struct 

  uint8 segundos; // los 0-59 
  minutos uint8; // 0-59 
  uint8 horas; // 0-23 
  uint8 Día; // 0-30 
  uint8 meses del // 0-11 
  años UInt16; // 2000 + 
} UTCTimeStruct;
 1.osalTimeUpdate (): desde osal_run_system () para actualizar el tiempo de ejecución, nula osalTimeUpdate (void);
esta función lee el número de MAC 320usec garrapatas a mantener la hora del reloj OSAL. no llame a esta función en otro sitio
2.osal_setClock (): inicializar la hora del dispositivo. osal_setClock vacío (UTCTime NewTime)
3.osal_getClock (): llamar a esta función para obtener la hora actual del dispositivo. UTCTime osal_getClock (void);

4.osal_ConvertUTCTime (): una función para UTCTime convert de UTCTimeStruct

osal_ConvertUTCTime vacío (UTCTimeStruct * tm, UTCTime secTime);

5.osal_ConvertUTCSecs (): UTCTimeStruct convierte en una función UTCTime

UTCTime osal_ConvertUTCSecs (UTCTimeStruct * tm);

Once, OSAL Varios Varios:

En esta sección se describen las funciones OSAL varias que no encajan en las categorías anteriores OSAL

OSAL descrito anteriormente no es adecuado para diversos tipos de función OSAL.

1.osal_rand (): devuelve un 16-bit uint16 número aleatorio osal_rand (void);

2. osal_memcmp (): compara sección de memoria.

uint8 osal_memcmp (const void * GENÉRICO SRC1, const void * GENÉRICO Src2, unsigned int len);

Valor de retorno: TRUE - mismo, FALSO - diferente

3.osal_memset (): * osal_memset void (* dest vacío, el valor uint8, int len);

功能 establece un búfer a un valor específico, 返回 值 indicación del lugar donde en el búfer de esta función se detuvo

4.osal_memcpy (): * osal_memcpy (void * DST, const void * src GENÉRICO, unsigned int len);

Función Copia de un tampón a otro búfer, Fin de ¿Dónde desea volver Buffer puntero
--------------------- 
Autor: DreamingCatcher 
Fuente: RDCC 
original: https: // blog. csdn.net/derricker406/article/details/74963442 
responsabilidad: Este artículo es un artículo original blogger, reproduce, por favor adjuntar enlace Bowen!

Publicado 25 artículos originales · ganado elogios 4 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/zhou8400/article/details/90408210
Recomendado
Clasificación