Added static Object_Table[], moved device_init() from main to Init_Service_Handlers() and added call to Device_Initialize_Object_Functions(). Modeled after revision 1890 of demo/server/main.c.
This commit is contained in:
@@ -53,7 +53,31 @@
|
|||||||
#include "lc.h"
|
#include "lc.h"
|
||||||
#include "lsp.h"
|
#include "lsp.h"
|
||||||
#include "mso.h"
|
#include "mso.h"
|
||||||
|
#include "ms-input.h"
|
||||||
|
#include "trendlog.h"
|
||||||
|
#if defined(BACFILE)
|
||||||
#include "bacfile.h"
|
#include "bacfile.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* All included BACnet objects */
|
||||||
|
static object_functions_t Object_Table[] = {
|
||||||
|
{DEVICE_OBJ_FUNCTIONS},
|
||||||
|
{ANALOG_INPUT_OBJ_FUNCTIONS},
|
||||||
|
{ANALOG_OUTPUT_OBJ_FUNCTIONS},
|
||||||
|
{ANALOG_VALUE_OBJ_FUNCTIONS},
|
||||||
|
{BINARY_INPUT_OBJ_FUNCTIONS},
|
||||||
|
{BINARY_OUTPUT_OBJ_FUNCTIONS},
|
||||||
|
{BINARY_VALUE_OBJ_FUNCTIONS},
|
||||||
|
{LIFE_SAFETY_POINT_OBJ_FUNCTIONS},
|
||||||
|
{LOAD_CONTROL_OBJ_FUNCTIONS},
|
||||||
|
{MULTI_STATE_OUTPUT_OBJ_FUNCTIONS},
|
||||||
|
{MULTI_STATE_INPUT_OBJ_FUNCTIONS},
|
||||||
|
{TRENDLOG_OBJ_FUNCTIONS},
|
||||||
|
#if defined(BACFILE)
|
||||||
|
{FILE_OBJ_FUNCTIONS},
|
||||||
|
#endif
|
||||||
|
{MAX_BACNET_OBJECT_TYPE, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL},
|
||||||
|
};
|
||||||
|
|
||||||
/* buffer used for receive */
|
/* buffer used for receive */
|
||||||
static uint8_t Rx_Buf[MAX_MPDU] = { 0 };
|
static uint8_t Rx_Buf[MAX_MPDU] = { 0 };
|
||||||
@@ -165,6 +189,9 @@ static void LocalIAmHandler(
|
|||||||
static void Init_Service_Handlers(
|
static void Init_Service_Handlers(
|
||||||
void)
|
void)
|
||||||
{
|
{
|
||||||
|
Device_Initialize_Object_Functions(&Object_Table[0]);
|
||||||
|
Device_Init();
|
||||||
|
|
||||||
/* we need to handle who-is to support dynamic device binding */
|
/* we need to handle who-is to support dynamic device binding */
|
||||||
apdu_set_unconfirmed_handler(SERVICE_UNCONFIRMED_WHO_IS, handler_who_is);
|
apdu_set_unconfirmed_handler(SERVICE_UNCONFIRMED_WHO_IS, handler_who_is);
|
||||||
apdu_set_unconfirmed_handler(SERVICE_UNCONFIRMED_I_AM, LocalIAmHandler);
|
apdu_set_unconfirmed_handler(SERVICE_UNCONFIRMED_I_AM, LocalIAmHandler);
|
||||||
@@ -181,6 +208,31 @@ static void Init_Service_Handlers(
|
|||||||
/* handle the data coming back from confirmed requests */
|
/* handle the data coming back from confirmed requests */
|
||||||
apdu_set_confirmed_ack_handler(SERVICE_CONFIRMED_READ_PROPERTY,
|
apdu_set_confirmed_ack_handler(SERVICE_CONFIRMED_READ_PROPERTY,
|
||||||
handler_read_property_ack);
|
handler_read_property_ack);
|
||||||
|
#if defined(BACFILE)
|
||||||
|
apdu_set_confirmed_handler(SERVICE_CONFIRMED_ATOMIC_READ_FILE,
|
||||||
|
handler_atomic_read_file);
|
||||||
|
#endif
|
||||||
|
apdu_set_confirmed_handler(SERVICE_CONFIRMED_SUBSCRIBE_COV,
|
||||||
|
handler_cov_subscribe);
|
||||||
|
|
||||||
|
// Adding these handlers require the project(s) to change.
|
||||||
|
//#if defined(BACFILE)
|
||||||
|
// apdu_set_confirmed_handler(SERVICE_CONFIRMED_ATOMIC_WRITE_FILE,
|
||||||
|
// handler_atomic_write_file);
|
||||||
|
//#endif
|
||||||
|
// apdu_set_confirmed_handler(SERVICE_CONFIRMED_READ_RANGE,
|
||||||
|
// handler_read_range);
|
||||||
|
// apdu_set_confirmed_handler(SERVICE_CONFIRMED_REINITIALIZE_DEVICE,
|
||||||
|
// handler_reinitialize_device);
|
||||||
|
// apdu_set_unconfirmed_handler(SERVICE_UNCONFIRMED_UTC_TIME_SYNCHRONIZATION,
|
||||||
|
// handler_timesync_utc);
|
||||||
|
// apdu_set_unconfirmed_handler(SERVICE_UNCONFIRMED_TIME_SYNCHRONIZATION,
|
||||||
|
// handler_timesync);
|
||||||
|
// apdu_set_unconfirmed_handler(SERVICE_UNCONFIRMED_COV_NOTIFICATION,
|
||||||
|
// handler_ucov_notification);
|
||||||
|
// /* handle communication so we can shutup when asked */
|
||||||
|
// apdu_set_confirmed_handler(SERVICE_CONFIRMED_DEVICE_COMMUNICATION_CONTROL,
|
||||||
|
// handler_device_communication_control);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_address(
|
static void print_address(
|
||||||
@@ -234,7 +286,6 @@ int main(
|
|||||||
(void) argc;
|
(void) argc;
|
||||||
(void) argv;
|
(void) argv;
|
||||||
Device_Set_Object_Instance_Number(4194300);
|
Device_Set_Object_Instance_Number(4194300);
|
||||||
Device_Init();
|
|
||||||
address_init();
|
address_init();
|
||||||
Init_Service_Handlers();
|
Init_Service_Handlers();
|
||||||
dlenv_init();
|
dlenv_init();
|
||||||
|
|||||||
Reference in New Issue
Block a user