From 80a4cca173006cef0f9ff590e553cf932e702ec5 Mon Sep 17 00:00:00 2001 From: skarg Date: Fri, 15 Nov 2013 14:53:41 +0000 Subject: [PATCH] adding functionality to lighting output object - unfinished --- bacnet-stack/demo/object/lo.c | 102 ++++++++++++++++++++++++++++++++++ bacnet-stack/demo/object/lo.h | 3 + 2 files changed, 105 insertions(+) diff --git a/bacnet-stack/demo/object/lo.c b/bacnet-stack/demo/object/lo.c index 5c591f36..d92d62b4 100644 --- a/bacnet-stack/demo/object/lo.c +++ b/bacnet-stack/demo/object/lo.c @@ -49,6 +49,7 @@ struct lighting_output_object { float Present_Value; float Tracking_Value; + float Physical_Value; BACNET_LIGHTING_COMMAND Lighting_Command; BACNET_LIGHTING_IN_PROGRESS In_Progress; bool Out_Of_Service:1; @@ -1252,6 +1253,106 @@ bool Lighting_Output_Write_Property( return status; } +/** + * Handles the timing for a single Lighting Output object Ramp + * + * @param pLight - Lighting Output object + * @param pCommand - BACNET_LIGHTING_COMMAND of the Lighting Output object + * @param milliseconds - number of milliseconds elapsed since previously + * called. Works best when called about every 10 milliseconds. + */ +static void Lighting_Output_Ramp_Handler( + struct lighting_output_object *pLight, + BACNET_LIGHTING_COMMAND *pCommand, + uint16_t milliseconds) +{ + if (pLight && pCommand) { + + } +} + +/** + * Handles the timing for a single Lighting Output object Fade + * + * @param pLight - Lighting Output object + * @param pCommand - BACNET_LIGHTING_COMMAND of the Lighting Output object + * @param milliseconds - number of milliseconds elapsed since previously + * called. Works best when called about every 10 milliseconds. + */ +static void Lighting_Output_Fade_Handler( + struct lighting_output_object *pLight, + BACNET_LIGHTING_COMMAND *pCommand, + uint16_t milliseconds) +{ + if (pLight && pCommand) { + + } +} + +/** + * Handles the timing for a single Lighting Output object + * + * @param index - 0..MAX_LIGHTING_OUTPUTS value + * @param milliseconds - number of milliseconds elapsed since previously + * called. Works best when called about every 10 milliseconds. + */ +static void Lighting_Output_Timer_Handler( + unsigned index, + uint16_t milliseconds) +{ + struct lighting_output_object *pLight = NULL; + BACNET_LIGHTING_COMMAND *pCommand = NULL; + + if (index < MAX_LIGHTING_OUTPUTS) { + pLight = &Lighting_Output[index]; + pCommand = &pLight->Lighting_Command; + switch (pCommand->operation) { + case BACNET_LIGHTS_NONE: + break; + case BACNET_LIGHTS_FADE_TO: + Lighting_Output_Fade_Handler(pLight, pCommand, milliseconds); + break; + case BACNET_LIGHTS_RAMP_TO: + Lighting_Output_Ramp_Handler(pLight, pCommand, milliseconds); + break; + case BACNET_LIGHTS_STEP_UP: + break; + case BACNET_LIGHTS_STEP_DOWN: + break; + case BACNET_LIGHTS_STEP_ON: + break; + case BACNET_LIGHTS_STEP_OFF: + break; + case BACNET_LIGHTS_WARN: + break; + case BACNET_LIGHTS_WARN_OFF: + break; + case BACNET_LIGHTS_WARN_RELINQUISH: + break; + case BACNET_LIGHTS_STOP: + break; + default: + break; + } + } +} + +/** + * Initializes the Lighting Output object data + * + * @param milliseconds - number of milliseconds elapsed since previously + * called. Works best when called about every 10 milliseconds. + */ +void Lighting_Output_Timer( + uint16_t milliseconds) +{ + unsigned i = 0; + + for (i = 0; i < MAX_LIGHTING_OUTPUTS; i++) { + Lighting_Output_Timer_Handler(i, milliseconds); + } +} + /** * Initializes the Lighting Output object data */ @@ -1263,6 +1364,7 @@ void Lighting_Output_Init( for (i = 0; i < MAX_LIGHTING_OUTPUTS; i++) { Lighting_Output[i].Present_Value = 0.0; Lighting_Output[i].Tracking_Value = 0.0; + Lighting_Output[i].Physical_Value = 0.0; Lighting_Output[i].Lighting_Command.operation = BACNET_LIGHTS_NONE; Lighting_Output[i].Lighting_Command.use_target_level = false; Lighting_Output[i].Lighting_Command.use_ramp_rate = false; diff --git a/bacnet-stack/demo/object/lo.h b/bacnet-stack/demo/object/lo.h index 7bbaa512..60072a38 100644 --- a/bacnet-stack/demo/object/lo.h +++ b/bacnet-stack/demo/object/lo.h @@ -156,6 +156,9 @@ extern "C" { uint32_t object_instance, unsigned priority); + void Lighting_Output_Timer( + uint16_t milliseconds); + void Lighting_Output_Init( void);