Notas de la versión del software DALI
Versión 3.0
2024-12-19 (Último)
Nueva función:
Se han añadido comandos para el maestro DALI a los equipos de control:
ALMACENE EL NIVEL ACTUAL EN DTR0,
CONSULTAR EL MODO ESPECÍFICO DEL FABRICANTE,
DTR0,
DTR1,
DTR2,
ESCRIBIR POSICIÓN DE MEMORIA - SIN RESPUESTA
Se ha añadido un comando para que el maestro DALI controle el dispositivo:
IDENTIFICAR DISPOSITIVO
Alumbrado de emergencia autónomo (Ed. 2.0):
Se han añadido comandos de ampliación de aplicaciones, que son utilizados por el maestro DALI para controlar los engranajes.
Funcionalidad del Equipo de Control implementada para desarrollar un dispositivo conforme a la norma IEC 62386-202 (Ed. 2.0).
Arreglar:
Se han corregido las fugas de memoria durante el registro para que éste sea ahora más eficiente y estable
Versión 2.1
2024-07-04
Nueva función:
Se ha añadido la variable opcional "Configuración actual de la unidad de bus" del banco de memoria 0 con la dirección 0x1B. También incluye un nuevo parámetro de configuración del proveedor para la inicialización.
Arreglar:
Se ha añadido el tipo de dispositivo 52 (Diagnóstico y Mantenimiento) que faltaba en el tipo de dispositivo Consulta (siguiente).
Se ha corregido la consulta del número de versión ampliada de las extensiones de dispositivo (tipos de dispositivo 49, 51 y 52).
Se ha adaptado el mecanismo para determinar y actualizar el "Número del último banco de memoria accesible" en la dirección 0x02 del banco de memoria 0. Ahora se tiene en cuenta la adición y/o eliminación de bancos de memoria específicos del fabricante.
Las variables del banco de memoria 0 "102 número de versión de todos los auxiliares eléctricos integrados" y "103 número de versión de todos los dispositivos de mando integrados" se ajustan ahora en función del modo de pila configurado (auxiliares eléctricos, dispositivos de mando) y ya no se inicializan generalmente con 2.0.
Se ha revisado el mecanismo de envío de comandos ampliados con la pila DALI configurada como dispositivo de control. Se ven afectados los módulos DT6 (LED), DT7 (Conmutación) y DT8 (Color).
Corrección del mecanismo de almacenamiento
Versión 2.0
2023-10-16
Nueva función:
La escritura de una celda en un banco de memoria específico del fabricante desencadena la reacción DALILIB_REACT_INTERNAL_CTRL_GEAR_MEMORY_CELL_CHANGED para los engranajes de control
La escritura de una celda en un banco de memoria específico del fabricante desencadena la reacción DALILIB_REACT_INTERNAL_CTRL_DEVICE_MEMORY_CELL_CHANGED para los dispositivos de control
Equipo de control: DT8 RGBWAF sólo añadido
Funciones de servicio y depuración añadidas
a) Detener e iniciar el receptor Dalí
b) Detección de errores de hardware durante la transmisión
(convertidor de nivel transmisor y/o receptor defectuoso)c) Enviar trama de prueba de 8 bits (sin Api)
d) Función para devolver la versión y el número de compilación.
e) Número de compilación recién introducido en LL-Driver
Arreglar:
Error de tiempo acumulado durante la transmisión (interfiere con 102.6.4) corregido
El comando TERMINATE desencadena una operación de guardado si una variable persistente ha cambiado durante el modo inicializado.
(Parte 102 Secuencia 7.1)Racecondition en el manejo de RecieveQueue eliminado.
Se han eliminado las retrollamadas de activación/desactivación de interrupciones. Ya no son necesarias debido a la resolución de la condición de carrera.
Versión 1.11
2023-03-24
Nueva función:
Definir DEBUG_LOG se introdujo para poder activar y desactivar el registro por separado de la versión DEBUG
Se ha introducido el parámetro de configuración deactivateAutomaticSavePersistent. Si se establece, el guardado de las variables persistentes sólo se activa mediante una acción interna.
Si la pila ha restablecido las variables persistentes a los valores predeterminados, la aplicación recibe ahora una notificación mediante una reacción.
Nueva reacción añadida para permitir distinguir entre Init y Reset al restablecer las variables persistentes a los valores por defecto.
OperatingMode 0x80 - 0xFF ahora está permitido por la pila
Se ha revisado el cálculo del nivel objetivo. Cuando se modifica el valor, se notifica a la aplicación a través de una reacción recién introducida
Se han introducido nuevos parámetros de configuración:
- para especificar el desplazamiento entre el inicio de la pila y la hora actual
- para utilizar un valor aleatorio para calcular la semilla aleatoria.La atenuación repetida utiliza ahora el nivel de luz real (de alta resolución) como nivel inicial en lugar de utilizar el ActualLevel redondeado.
Las acciones internas "DALILIB_ACT_INTERNAL_CTRL_GEAR_EXEC_DAPC" y "DALILIB_ACT_INTERNAL_CTRL_GEAR_EXEC_DAPC_RAW_VALUE" desencadenan un proceso que corresponde al de un comando DAPC entrante externo y utiliza los ajustes existentes (desvanecimiento) durante la transición.
Se puede crear cualquier número de Membanks personalizados. El número de Membanks sigue estando limitado por MAXMEMBANKS
MAXMEMBANKS se ha trasladado de "defines.h" a "libdali.h" y, por tanto, a la zona configurable por el usuario
Para los bancos de memoria personalizados, ahora se puede escribir en las direcciones 1 y 2 mediante `ESCRITAR UBICACIÓN DE MEMORIA`.
En la función gear_calc_actual_level(), se ha revisado el cálculo de los stepValues para aumentar la resolución al atenuar.
Se ha añadido una nueva enumeración que permite a la aplicación diferenciar entre fallo total y parcial de la lámpara al establecer y consultar el estado de fallo de la lámpara.
Hacer que el banco de memoria 1 esté disponible como banco de memoria de usuario en GEARS si la extensión DALI Parte 251 DiiA está desactivada
Las tramas propietarias entre 9 y 12 bits ahora también se comunican a la aplicación. Éstas también pueden producirse con respuestas de marchas mal programadas que en realidad deberían generar una colisión. Esto permite a la aplicación ayudarse a sí misma.
SET OPERATING MODE desencadena ahora una DALILIB_CTRL_GEAR_REACTION con el código de reacción DALILIB_REACT_INTERNAL_CTRL_GEAR_SET_OPERATING_MODE
Función para borrar (referencia) bancos de memoria específicos del fabricante implementados
SET OPERATING MODE desencadena ahora una DALILIB_CTRL_DEVICE_REACTION con el código de reacción DALILIB_REACT_INTERNAL_CTRL_DEVICE_SET_OPERATING_MODE
Arreglar:
La reacción DALILIB_REACT_INTERNAL_CTRL_GEAR_DEFAULT_PERS_MEMORY contiene ahora datos en la struct gearReact
El comando IDENTIFY DEFICE se ejecuta según la especificación, DALI_CTRL_DEVICE_IDENTIFY_DEVICE_TIME_MAX se ha incrementado a 10s. La pila informa a la aplicación sobre una nueva reacción introducida cuando cambia el estado de Identificar dispositivo.
El dispositivo de identificación se restablece para los comandos (excepto las consultas)
Se ejecutan los comandos Send-Twice precedidos por el comando ENABLE DEVICE TYPE.
El comando QUERY MANUFACTURER SPECIFIC MODE se responde con Sí si la pila está funcionando en un modo específico del fabricante.
Cuando se modifica la curva de atenuación, se activa o desactiva el bit correspondiente en la variable operatingMode.
Al regular utilizando la tasa de regulación, se evita el desbordamiento o el subdesbordamiento.
La pila configurada como engranaje responde al comando CONSULTA ENGRANAJE PRESENTE con Sí si la dirección corta es MÁSCARA.
Cuando se atenúa, el targetLevel se fija directamente en 0.
El tiempo de espera de Enviar dos veces se ha reducido a 99 ms.
Se produjo un desbordamiento por defecto en gear_calc_actual_level() durante el cálculo de stepValue; el cálculo se realiza ahora como un entero de 64 bits.
Los procesos de regulación se completan una vez transcurrido el tiempo de regulación
Si targetLevel es 0, el actualLevel se pone a 0 al final del proceso de atenuación
Si el stepTime es bajo, el proceso de regulación sólo finaliza después de que se haya ejecutado el paso de regulación
Tras un fallo del sistema, se conserva el actualLevel
Cuando se ejecuta el primer comando ARRIBA/ABAJO, se ejecuta el primer paso antes de que comience el proceso de atenuación
Al calcular el diffLevel en gear_calc_dimmrate(), el arrastre se tiene en cuenta para las secuencias UP/DOWN
Cuando se reciben los comandos ARRIBA y ABAJO, la pila cancela el proceso de regulación en curso
Al calcular el stepTime de un órgano de regulación, podía producirse una división por cero; ahora se comprueba y se evita la división.
El comando DAPC(MASK) conserva limitError
Con el comando UP, la pila establece limitError si acutalLevel ya está en maxLevel o minLevel o si se superan los límites al calcular el targetLevel.
Con un PowerOn, la pila establece el targetLevel con una comprobación de los límites, de modo que limitError también se establece si es necesario
Con las secuencias DAPC, el proceso de atenuación se calculaba incorrectamente de modo que no se producía ningún cambio de nivel durante la atenuación; ahora el proceso de atenuación se calcula correctamente.
Cuando se ejecuta el comando IR A ESCENA (nivel real igual a nivel objetivo), en este caso no se activa ningún proceso de atenuación
La pila sólo cambia el actualLevel cuando se ejecutan los comandos RECALL MIN LEVEL y RECALL MAX LEVEL.
Durante el proceso de identificación del dispositivo, la pila ajustaba el nivel de luz real a diferentes brillos dependiendo del initialisationState; ahora la pila siempre cambia entre apagado y 100 %.
Cuando finaliza el proceso de Identificar dispositivo, se establece el nivel de luz real al finalizar el proceso
Al ejecutar los comandos DAPC, SET POWER ON LEVEL y DTR0 (y otras instrucciones), la pila termina el proceso del dispositivo Identify
Los comandos RECALL MIN LEVEL y RECALL MAX LEVEL fijan el nivel de luz real en PHM o en 100 % si initialisationState no es igual a DISABLED, independientemente de initialisationState
Durante un proceso de atenuación, el nuevo actualLevel sólo se fija si aún no se ha alcanzado el targetLevel
En gear_init_after_power_cycle(), el targetLevel sólo se establece junto con el actualLevel una vez transcurrido el tiempo de encendido.
La pila puede diferenciar entre fallo total de la lámpara y fallo parcial de la lámpara y comunicarle el estado respectivo - la pila establece entonces las variables lampFailure y lampOn en consecuencia
Los tiempos de atenuación de fastFadeTime se tomaron de la tabla 1 de la norma IEC 62386-207:2009, ahora la pila puede utilizar los tiempos de atenuación de la tabla 1 de la norma IEC 62386-207:2018, conmutables en tiempo de compilación mediante la nueva definición introducida.
Si el startTimeOffset era mayor que el currentTime, la hora de inicio para el procedimiento de encendido de los engranajes y para la notificación de ciclo de encendido de los controladores de aplicación se calculaba incorrectamente; ahora la hora de inicio se calcula correctamente con envoltura.
Si se produce un fallo en el sistema durante el tiempo de encendido, la pila cancela el procedimiento de encendido.
Se han corregido las advertencias del compilador IAR
Si minLevel y targetLevel estaban fijados en 1, la pila fijó el targetLevel en 0 cuando se ejecutó el comando STEP DOWN; ahora el targetLevel permanece en 1 en este caso.
Al ejecutar el comando GO TO SCENE (MASK), la pila establece powerCycleSeen en FALSE si sceneLevel es MASK
Si se procesa el comando DAPC (MASK) durante el procedimiento de encendido, la pila cancela este proceso.
El primer paso de atenuación de un proceso de atenuación se realizaba 10 ms después del inicio, incluso si el stepTime era significativamente menor; ahora el controlador de bajo nivel solicita una trama de estado en 2 ms al inicio del proceso de atenuación, de modo que el primer paso de atenuación se realiza después de 2 ms si el stepTime es bajo.
Con la atenuación de alta resolución, el nivel de luz recién calculado se pasaba a la aplicación cada vez que se llamaba al timingHelper; ahora la pila sólo pasa el nivel de luz recién calculado a la aplicación si el nivel de luz ha cambiado.
Las acciones internas se ejecutan durante la caída de tensión del bus o el fallo del sistema.
Al inicializar una instancia de pila, se tienen en cuenta las instancias activas y se actualizan los valores correspondientes en su banco de memoria 0
Se han corregido las advertencias del compilador Keil
Si MEM_BANK1_EXTENSION está activado, se informa de 0x08 (V2.0) para DT50 para QUERY_EXTENDED_VERSION_NUMBER
Valores por defecto para MEM_BANK1 corregidos
La nueva reacción interna "DALILIB_REACT_INTERNAL_CTRL_GEAR_GO_TO_SCENE" se activa para un mensaje de ir a escena.
El índice de la escena se escribe en reactValue.
La acción interna Get scene devuelve un valor porcentual. El valor bruto sigue estando disponible a través de gearReact.reactRawValue.
Ahora todos los eventos contienen siempre las fechas
El código de reacción de los sensores de luz ya no se fija en Desconocido si se fija el primer bit del valor de entrada.
El filtro de eventos para los sensores de luz afecta a los eventos del temporizador del informe y no sólo a los eventos que se activan por cambios de valor.
"CONSULTA TIPO DE FUENTE DE LUZ" de Part102 - 11.5.19 corregido. Anteriormente, se emitía el tipo de dispositivo en lugar del tipo de fuente de luz.
La prueba ProbitLab 102.6.4 (desvanecimiento a cero) podía fallar debido a la medición interna del tiempo para la API. (corregido)
LL-Driver obtiene la versión 1.12
Versión 1.10
2022-05-31
Nueva función:
Definir DEBUG_LOG se introdujo para poder activar y desactivar el registro por separado de la versión DEBUG
Se ha introducido el parámetro de configuración deactivateAutomaticSavePersistent. Si se establece, el guardado de las variables persistentes sólo se activa mediante una acción interna.
Si la pila ha restablecido las variables persistentes a los valores predeterminados, la aplicación recibe ahora una notificación mediante una reacción.
Nueva reacción añadida para permitir distinguir entre Init y Reset al restablecer las variables persistentes a los valores por defecto.
OperatingMode 0x80 - 0xFF ahora está permitido por la pila
Se ha revisado el cálculo del nivel objetivo en la pila. Cuando se modifica el valor, se notifica a la aplicación a través de una reacción recién introducida
Nuevo parámetro de configuración para especificar el desfase entre el inicio de la pila y la hora actual.
La atenuación repetida utiliza ahora el nivel de luz real (de alta resolución) como nivel inicial en lugar de utilizar el ActualLevel redondeado.
se introdujo para poder utilizar un valor aleatorio real para el cálculo de la semilla aleatoria.
En la función gear_calc_actual_level(), se ha revisado el cálculo de los stepValues para aumentar la resolución al atenuar.
Enumeración añadida, que permite a la aplicación diferenciar entre fallo total y parcial de la lámpara al establecer y consultar el estado de fallo de la lámpara.
Arreglar:
La reacción DALILIB_REACT_INTERNAL_CTRL_GEAR_DEFAULT_PERS_MEMORY era incorrecta y ahora contiene los datos esperados en la estructura gearReact
El comando IDENTIFY DEFICE se ejecuta ahora según la especificación, DALI_CTRL_DEVICE_IDENTIFY_DEVICE_TIME_MAX se ha aumentado a 10s. La pila informa a la aplicación sobre una nueva reacción introducida cuando cambia el estado de Identificar dispositivo.
El dispositivo de identificación se reinicia ahora para los comandos (excepto las consultas)
Los comandos Send-Twice con el comando precedente ENABLE DEVICE TYPE fueron descartados y ahora se ejecutan.
El comando QUERY MANUFACTURER SPECIFIC MODE se ignoraba y ahora se responde con Sí si la pila está funcionando en un modo específico del fabricante.
El comando LED QUERY OPERATING MODE se respondía incorrectamente - se ignoraba la curva de atenuación activa; ahora el bit correspondiente en la variable operatingMode se activa o se borra cuando se cambia la curva de atenuación.
Al regular utilizando la tasa de regulación, podía producirse un desbordamiento o subdesbordamiento aritmético; ahora se comprueba y se evita el desbordamiento o subdesbordamiento.
La pila configurada como engranaje no respondía al comando PREGUNTAR ENGRANAJE PRESENTE si la dirección corta era MÁSCARA. Ahora la petición se responde siempre con un sí.
Al regular a nivel 0, el targetLevel se fijaba primero en minLevel y sólo después de regular a 0. Ahora el targetLevel se fija directamente en 0.
El tiempo de espera de Enviar dos veces se ha fijado en 99 ms.
Se produjo un desbordamiento por defecto en gear_calc_actual_level() durante el cálculo de stepValue; el cálculo se realiza ahora como un entero de 64 bits.
Los procesos de atenuación terminaban a veces demasiado pronto, ahora el proceso de atenuación finaliza exactamente después de que haya transcurrido el tiempo de atenuación.
Con targetLevel igual a 0, el actualLevel ya se ponía a 0 durante el proceso de atenuación; ahora el actualLevel sólo se pone a 0 al final del proceso de atenuación.
Con un stepTime bajo, podía ocurrir que el proceso de atenuación finalizara antes de que se ejecutara el último paso de atenuación; ahora el proceso de atenuación sólo finaliza después de que se haya ejecutado el paso de atenuación.
Tras un fallo del sistema, el actualLevel se puso a cero, ahora se conserva el actualLevel.
Cuando se ejecutó el primer comando ARRIBA/ABAJO, se ignoró el primer paso antes del inicio del proceso de regulación; ahora se ejecuta este paso.
Al calcular el diffLevel en gear_calc_dimmrate(), se ingoraba el arrastre de forma que se realizaban muy pocos pasos de regulación para las secuencias ARRIBA/ABAJO; ahora se tiene en cuenta el arrastre para las secuencias ARRIBA/ABAJO.
El proceso de atenuación en curso no se cancelaba cuando se recibían los comandos ARRIBA y ABAJO; ahora la pila cancela el proceso de atenuación en curso.
Al calcular el stepTime de un órgano de regulación, podía producirse una división por cero; ahora se comprueba y se evita la división.
Con el comando DAPC(MASK), imitError se fijaba en FALSE, ahora se mantiene limitError.
Con el comando ARRIBA, no se establecía limitError si se superaba maxLevel durante la ejecución. Del mismo modo, limitError no se establecía para el comando DOWN si minLevel se quedaba por debajo durante la ejecución. Ahora la pila establece limitError si acutalLevel ya está en maxLevel o minLevel o si se superan los límites al calcular el targetLevel.
Con un PowerOn el targetLevel se fijaba directamente sin comprobar los límites, ahora la pila fija el targetLevel comprobando los límites, de forma que limitError también se fija si es necesario.
Con las secuencias DAPC, el proceso de atenuación se calculaba incorrectamente de modo que no se producía ningún cambio de nivel durante la atenuación; ahora el proceso de atenuación se calcula correctamente.
Al ejecutar el comando IR A ESCENA, se disparaba un proceso de atenuación aunque el nivel real era igual al nivel objetivo, ahora no se dispara ningún proceso de atenuación en este caso.
Durante el proceso de Identificar dispositivo se cambiaba el actualLevel, ahora la pila sólo cambia el actualLevel cuando se ejecutan los comandos RECALL MIN LEVEL y RECALL MAX LEVEL.
Durante el proceso de identificación del dispositivo, la pila ajustaba el nivel de luz real a diferentes brillos dependiendo del initialisationState; ahora la pila siempre cambia entre Apagado y 100%.
Cuando se terminaba el proceso Identificar dispositivo, el nivel de luz real sólo se fijaba si el temporizador había expirado; ahora siempre se fija cuando se termina el proceso.
Al ejecutar los comandos DAPC, SET POWER ON LEVEL y DTR0 (y otras instrucciones) la pila no terminaba el proceso de Identificar dispositivo, ahora la pila termina el proceso.
Los comandos RECALL MIN LEVEL y RECALL MAX LEVEL siempre fijaban el nivel de luz real al mismo nivel independientemente del initialisationState; ahora los dos comandos fijan el nivel de luz real a PHM o 100% si el initialisationState no es igual a DISABLED.
Durante un proceso de atenuación en el que ya se había alcanzado el Nivelobjetivo, no se recalculaba el nuevo Nivelreal, sino que se seguía fijando; ahora, el nuevo Nivelreal sólo se fija si aún no se ha alcanzado el Nivelobjetivo.
En gear_init_after_power_cycle() el targetLevel ya se fijaba en función del powerOnLevel, ahora el targetLevel sólo se fija junto con el actualLevel una vez transcurrido el tiempo de encendido.
La pila no diferenciaba entre fallo total de la lámpara y fallo parcial de la lámpara, ahora la aplicación puede comunicar el estado respectivo a la pila y ésta establece las variables lampFailure y lampOn en consecuencia.
Los tiempos de atenuación de fastFadeTime se tomaron de la tabla 1 de la norma IEC 62386-207:2009, ahora la pila puede utilizar los tiempos de atenuación de la tabla 1 de la norma IEC 62386-207:2018, conmutables en tiempo de compilación mediante la nueva definición introducida.
Si el startTimeOffset era mayor que el currentTime, la hora de inicio para el procedimiento de encendido de los engranajes y para la notificación de ciclo de encendido de los controladores de aplicación se calculaba incorrectamente; ahora la hora de inicio se calcula correctamente con envoltura.
Si se producía un fallo del sistema durante el tiempo de encendido, el procedimiento de encendido no se cancelaba, ahora la pila cancela el procedimiento de encendido cuando se detecta un fallo del sistema.
Se han corregido las advertencias del compilador IAR
Si minLevel y targetLevel estaban fijados en 1, la pila fijó el targetLevel en 0 cuando se ejecutó el comando STEP DOWN; ahora el targetLevel permanece en 1 en este caso.
Al ejecutar el comando IR A ESCENA (MÁSCARA), powerCycleSeen no se restablecía, ahora la pila establece powerCycleSeen en FALSE incluso si sceneLevel es igual a MÁSCARA.
Si se procesaba el comando DAPC (MASK) durante el procedimiento de encendido, éste continuaba ejecutándose sin cambios; ahora la pila cancela el procedimiento de encendido al procesar el comando DAPC (MASK).
El primer paso de atenuación de un proceso de atenuación se realizaba 10 ms después del inicio, incluso si el stepTime era significativamente menor; ahora el controlador de bajo nivel solicita una trama de estado en 2 ms al inicio del proceso de atenuación, de modo que el primer paso de atenuación se realiza después de 2 ms si el stepTime es bajo.
Con la atenuación de alta resolución, el nivel de luz recién calculado se pasaba a la aplicación cada vez que se llamaba al timingHelper; ahora la pila sólo pasa el nivel de luz recién calculado a la aplicación si el nivel de luz ha cambiado.
Las acciones internas se descartaban durante la caída de tensión del bus o el fallo del sistema, ahora las acciones internas también se ejecutan durante la caída de tensión del bus o el fallo del sistema.
Si se iniciaban varias instancias de la pila en una unidad de bus, éstas no se tenían en cuenta durante la inicialización; ahora, cuando se inicializa una instancia de la pila, se tienen en cuenta las instancias que ya están activas y se actualizan los valores correspondientes en su banco de memoria 0.
Se han corregido las advertencias del compilador Keil
Versión 1.9
2021-10-21
Nueva función:
Se han introducido nuevas acciones internas que permiten leer o modificar las variables operativas de la pila
Se ha introducido un nuevo parámetro de configuración para establecer el retardo para guardar los datos persistentes entre 0-29 segundos
Las funciones de devolución de llamada fAppLoadModuleMem y fAppSaveModuleMem ahora también pasan el puntero a la instancia de pila y la versión del bloque de memoria como parámetros
Arreglar:
El mecanismo de guardar memoria persistente ahora también se activa cuando se procesa el comando RESET
La acción DALILIB_REACT_INTERNAL_CTRL_DEVICE_DEFAULT_PERS_MEMORY ahora también se implementa para los bloques de memoria
Antes de guardar los bloques de memoria, se realiza una comprobación para asegurarse de que el dispositivo está configurado en consecuencia y está utilizando realmente este bloque
Versión 1.8
2021-08-06
Nueva función:
Se ha introducido un nuevo mecanismo para guardar los datos persistentes. Los datos persistentes se guardan ahora por separado en módulos. Para ello se dispone de las nuevas funciones de devolución de llamada fAppLoadModuleMem y fAppSaveModuleMem y se ha adaptado la estructura de datos interna. Se ha introducido un nuevo parámetro de configuración savePersistentModules para activar el nuevo mecanismo de guardado de datos persistentes. El mecanismo anterior puede seguir utilizándose
Arreglar:
Se ha corregido el comportamiento al enviar tramas de prueba
Cuando se recibe una colisión de bus, cualquier colisión existente se señala ahora a la aplicación como finalizada antes de que se señale la nueva colisión
El tiempo de espera de la notificación del ciclo de alimentación se fija ahora en un valor comprendido entre 1300 y 4900 ms con una distribución uniforme continua
Versión 1.7
2021-06-24
Nueva función:
La palabra clave C++ "using" ha sido sustituida por isUsed en la estructura dali_instance_t
Arreglar:
Se ha añadido un parámetro de tiempo a la interfaz con el controlador de bajo nivel para poder determinar los tiempos de espera de las tramas send-twice de acuerdo con la norma
El recién introducido parámetro de tiempo de la trama se utiliza ahora para calcular el tiempo de espera
El tiempo de espera de Enviar dos veces tramas se ha incrementado a 102ms
El comando ENVIAR TRAMAS DE PRUEBA se procesa ahora y las tramas de prueba se envían en consecuencia
Ahora también se puede escribir en las celdas grabables del banco de memoria 201
Se ha corregido el procesamiento del comando ESCRIBIR MEMORIA DIRECTA
Cuando se procesan los comandos QUERY CONTENT DTR2 y DTR2:DTR1, ya no se restablece el writeEnableState
Al procesar el comando VERIFICAR DIRECCIÓN CORTA, se aplica ahora la máscara de dirección corta y se descarta el comando si es necesario
Al procesar el comando HABILITAR INSTANCIA, el sistema comprueba ahora si la pila está configurada como controlador de aplicaciones para omitir el procesamiento posterior en caso necesario.
Los comandos de instancia se descartan ahora de la pila de acuerdo con la Parte 103 Enmienda 1 si se configura como controlador de aplicación
Los comandos reservados en la norma ahora se reconocen correctamente y se descartan
Versión 1.6
2021-05-20
Arreglar:
Ahora, el InitialisationState también se restablece una vez transcurrido el tiempo de inicialización si se establece como WITHDRAWN.
El comando INITIALIZE ya no sobrescribe el InitialisationState si se establece en WITHDRAWN
El incremento de DTR0 al ejecutar los comandos ESCRIBIR CELDA DE MEMORIA o LEER CELDA DE MEMORIA se ha corregido y ahora se realiza según la norma
Versión 1.5
2021-05-10
Nueva función:
Guardar datos persistentes al cambiar el valor de variables persistentes se activa ahora 29 segundos después del primer cambio de valor
Arreglar:
El desbordamiento del contador de tiempo era defectuoso y se ha corregido
El contador de tiempo de ejecución de la demostración era incorrecto y se ha corregido
Al ejecutar el comando RESET, el initialisationState ya no se restablece por defecto
El número del banco de memoria de la extensión D4i Parte 351 se ha corregido a 201
Versión 1.4
2021-03-31
Nueva función:
Las extensiones D4i pueden ahora activarse o desactivarse en tiempo de compilación
Se han añadido nuevas acciones para ajustar el nivel de luz con valores brutos
Arreglar:
Ahora se analiza el valor de retorno de fAppSend y se devuelve R_DALILIB_BUSY a la aplicación en caso de error
Se ha ajustado la comprobación de tramas Send Twice, se ha introducido el nuevo tiempo de espera DALI_SEND_TWICE_TIMEOUT
Cuando se cambia el valor de una variable persistente, los datos persistentes se guardan ahora inmediatamente
La creación del marco para el evento NOTIFICACIÓN DE POTENCIA era incorrecta y se ha corregido de acuerdo con la norma
Los comandos dirigidos a un grupo ahora también se ejecutan cuando se establece el grupo
El incremento de DTR0 al ejecutar los comandos ESCRIBIR CELDA DE MEMORIA o LEER CELDA DE MEMORIA se ha corregido y ahora se realiza según la norma
Versión 1.3
2021-03-08
Nueva función:
Las extensiones D4i (piezas 250, 251, 252, 253 y 351) son compatibles con la pila
Se ha añadido el nuevo parámetro de configuración savePersistentOnInit. Cuando se reinicializa la memoria persistente, se guarda directamente en función de savePersistentOnInit
Se ha introducido un nuevo engranaje interno y una nueva acción del dispositivo para solicitar un búfer con los datos predeterminados de la memoria persistente
Arreglar:
Los comandos con dirección de instancia "Dispositivo" ahora se aceptan y procesan
Las tramas de reenvío ya no se envían en modo quiescente
Si la pila está esperando una respuesta W pero recibe una orden, ahora se notifica a la aplicación la falta de respuesta
El comando QUERY INSTANCE TYPE ahora sólo es respondido por la pila si está configurada como dispositivo de entrada
Se han corregido las advertencias generadas por la bandera de compilador -Wextra
El nivel objetivo de las marchas ahora también se pone a 0 sin desvanecimiento cuando se recibe un comando DAPC 0
El buffer para las funciones de callback fPAppSaveMem y fPAppLoadMem se ha incrementado a 512 bytes y el parámetro nSize se ha incrementado de uint8_t a uint16_t
Las funciones de devolución de llamada fPAppSaveMem y fPAppLoadMem transfieren ahora el tamaño total de la memoria intermedia a la aplicación
La pila ahora sólo responde al comando QUERY FEATURE TYPE si está configurada como dispositivo de entrada
Se han corregido las advertencias del compilador IAR
Versión 1.2
2020-07-15
Nueva función:
Se han añadido acciones para la comunicación con DT8 Gears
Se ha añadido la directiva C++ a libdali.h
Las colisiones en el bus DALI se señalizan a la aplicación
Los archivos fuente se han movido al nuevo subdirectorio "src" y los archivos de cabecera al nuevo subdirectorio "inc"
Archivos fuente Doxygen añadidos al nuevo subdirectorio "dali_lib_documentation"
Se ha implementado el envío y la recepción de tramas propietarias con una longitud de 40 - 64 bits
Los bancos de memoria específicos del fabricante pueden ser creados ahora por la aplicación
Se han añadido acciones para establecer las variables de marcha powerOnLevel, systemFailureLevel, lastLightLevel, targetLevel y lastActiveLevel.
Permitir acciones durante un fallo del sistema de bus DALI es ahora configurable
Se han añadido acciones para los comandos de dispositivo READ NEXT MEMORY CELL, WRITE NEXT MEMORY CELL, QUERY MISSING SHORT ADDRESS, QUERY CONTENT DTR0, QUERY CONTENT DTR1, QUERY CONTENT DTR2 y QUERY QUIESCENT MODE
Se han añadido acciones para la comunicación con dispositivos sensores de luz y de ocupación
Arreglar:
Las respuestas a las acciones CONSULTAR SIGUIENTE TIPO DE DISPOSITIVO y CONSULTAR DIRECCIÓN CORTA FALTA ahora se reenvían a la aplicación
Las respuestas a los comandos GEAR_CMD_DTR2, GEAR_CMD_QUERY_CONTENT_DTR0, GEAR_CMD_QUERY_CONTENT_DTR1 y GEAR_CMD_QUERY_CONTENT_DTR2 se evalúan ahora correctamente.
Las secuencias de comandos de las acciones DALILIB_ACT_CTRL_GEAR_WRITE_MEMORY_CELL, DALILIB_ACT_CTRL_GEAR_LED_SELECT_DIMMING_CURVE y DALILIB_ACT_CTRL_GEAR_LED_SET_FAST_FADE_TIME eran defectuosas y se han adaptado a la norma DALI.
Se han corregido las advertencias generadas por la bandera de compilador -Wextra
Los eventos recibidos con el esquema "Dispositivo/Instancia" se reenvían ahora correctamente a la aplicación