Added a reject handler function pointer to simplify the reject message for unsupported services.
This commit is contained in:
+15
-1
@@ -53,6 +53,15 @@ void apdu_set_confirmed_handler(
|
|||||||
Confirmed_Function[service_choice] = pFunction;
|
Confirmed_Function[service_choice] = pFunction;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Allow the APDU handler to automatically reject
|
||||||
|
static confirmed_function Unrecognized_Service_Handler;
|
||||||
|
|
||||||
|
void apdu_set_unrecognized_service_handler_handler(
|
||||||
|
confirmed_function pFunction)
|
||||||
|
{
|
||||||
|
Unrecognized_Service_Handler = pFunction;
|
||||||
|
}
|
||||||
|
|
||||||
// Unconfirmed Function Handlers
|
// Unconfirmed Function Handlers
|
||||||
// If they are not set, they are not handled
|
// If they are not set, they are not handled
|
||||||
static unconfirmed_function
|
static unconfirmed_function
|
||||||
@@ -179,7 +188,12 @@ void apdu_handler(
|
|||||||
&service_data);
|
&service_data);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//FIXME: send a reject message
|
if (Unrecognized_Service_Handler)
|
||||||
|
Unrecognized_Service_Handler(
|
||||||
|
service_request,
|
||||||
|
service_request_len,
|
||||||
|
src,
|
||||||
|
&service_data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -113,6 +113,10 @@ void apdu_set_confirmed_simple_ack_handler(
|
|||||||
BACNET_CONFIRMED_SERVICE service_choice,
|
BACNET_CONFIRMED_SERVICE service_choice,
|
||||||
confirmed_simple_ack_function pFunction);
|
confirmed_simple_ack_function pFunction);
|
||||||
|
|
||||||
|
// configure reject for confirmed services that are not supported
|
||||||
|
void apdu_set_unrecognized_service_handler_handler(
|
||||||
|
confirmed_function pFunction);
|
||||||
|
|
||||||
void apdu_set_confirmed_handler(
|
void apdu_set_confirmed_handler(
|
||||||
BACNET_CONFIRMED_SERVICE service_choice,
|
BACNET_CONFIRMED_SERVICE service_choice,
|
||||||
confirmed_function pFunction);
|
confirmed_function pFunction);
|
||||||
|
|||||||
@@ -262,98 +262,12 @@ static void Init_Service_Handlers(void)
|
|||||||
|
|
||||||
// set the handler for all the services we don't implement
|
// set the handler for all the services we don't implement
|
||||||
// It is required to send the proper reject message...
|
// It is required to send the proper reject message...
|
||||||
apdu_set_confirmed_handler(
|
apdu_set_unrecognized_service_handler_handler(
|
||||||
SERVICE_CONFIRMED_ACKNOWLEDGE_ALARM,
|
|
||||||
UnrecognizedServiceHandler);
|
UnrecognizedServiceHandler);
|
||||||
apdu_set_confirmed_handler(
|
// we must implement read property - it's required!
|
||||||
SERVICE_CONFIRMED_COV_NOTIFICATION,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_EVENT_NOTIFICATION,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_GET_ALARM_SUMMARY,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_GET_ENROLLMENT_SUMMARY,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_GET_EVENT_INFORMATION,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_SUBSCRIBE_COV,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_SUBSCRIBE_COV_PROPERTY,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_LIFE_SAFETY_OPERATION,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_ATOMIC_READ_FILE,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_ATOMIC_WRITE_FILE,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_ADD_LIST_ELEMENT,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_REMOVE_LIST_ELEMENT,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_CREATE_OBJECT,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_DELETE_OBJECT,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
// FIXME: we must implement read property - it's required!
|
|
||||||
apdu_set_confirmed_handler(
|
apdu_set_confirmed_handler(
|
||||||
SERVICE_CONFIRMED_READ_PROPERTY,
|
SERVICE_CONFIRMED_READ_PROPERTY,
|
||||||
ReadPropertyHandler);
|
ReadPropertyHandler);
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_READ_PROPERTY_CONDITIONAL,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_READ_PROPERTY_MULTIPLE,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_READ_RANGE,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
// FIXME: we probably want to implement write property to be useful
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_WRITE_PROPERTY,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_WRITE_PROPERTY_MULTIPLE,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_DEVICE_COMMUNICATION_CONTROL,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_PRIVATE_TRANSFER,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_TEXT_MESSAGE,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_REINITIALIZE_DEVICE,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_VT_OPEN,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_VT_CLOSE,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_VT_DATA,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_AUTHENTICATE,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
apdu_set_confirmed_handler(
|
|
||||||
SERVICE_CONFIRMED_REQUEST_KEY,
|
|
||||||
UnrecognizedServiceHandler);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
|
|||||||
Reference in New Issue
Block a user