コード例 #1
0
ファイル: ai.c プロジェクト: aniston/node-bacnet
void Analog_Input_Present_Value_Set(
    uint32_t object_instance,
    float value)
{
	unsigned index = 0;

	index = Analog_Input_Instance_To_Index(object_instance);
	if (index < MAX_ANALOG_INPUTS) {
        Present_Value[index] = value;
    }
}
コード例 #2
0
ファイル: ai.c プロジェクト: aniston/node-bacnet
void Analog_Input_Out_Of_Service_Set(
    uint32_t object_instance,
    bool value)
{
	unsigned index = 0;

	index = Analog_Input_Instance_To_Index(object_instance);
	if (index < MAX_ANALOG_INPUTS) {
		Out_Of_Service[index] = value;
	}
}
コード例 #3
0
ファイル: ai.c プロジェクト: aniston/node-bacnet
/* given instance exists */
bool Analog_Input_Valid_Instance(
    uint32_t object_instance)
{
	unsigned index = 0;

	index = Analog_Input_Instance_To_Index(object_instance);
	if (index < MAX_ANALOG_INPUTS) {
        return true;
    }

    return false;
}
コード例 #4
0
ファイル: ai.c プロジェクト: aniston/node-bacnet
uint16_t Analog_Input_Units(
    uint32_t object_instance)
{
	unsigned index = 0;
    uint16_t value = UNITS_NO_UNITS;

	index = Analog_Input_Instance_To_Index(object_instance);
	if (index < MAX_ANALOG_INPUTS) {
        value = Units[index];
    }

    return value;
}
コード例 #5
0
ファイル: ai.c プロジェクト: aniston/node-bacnet
bool Analog_Input_Out_Of_Service(
    uint32_t object_instance)
{
	unsigned index = 0;
	bool value = false;

	index = Analog_Input_Instance_To_Index(object_instance);
	if (index < MAX_ANALOG_INPUTS) {
		value = Out_Of_Service[index];
	}

	return value;
}
コード例 #6
0
ファイル: ai.c プロジェクト: aniston/node-bacnet
float Analog_Input_Present_Value(
    uint32_t object_instance)
{
    float value = 0.0;
	unsigned index = 0;

	index = Analog_Input_Instance_To_Index(object_instance);
	if (index < MAX_ANALOG_INPUTS) {
        value = Present_Value[index];
    }

    return value;
}
コード例 #7
0
ファイル: ai.c プロジェクト: aniston/node-bacnet
bool Analog_Input_Units_Set(
    uint32_t object_instance,
    uint16_t value)
{
	unsigned index = 0;
    bool status = false;

	index = Analog_Input_Instance_To_Index(object_instance);
	if (index < MAX_ANALOG_INPUTS) {
        Units[index] = value;
        status = true;
    }

    return status;
}
コード例 #8
0
ファイル: ai.c プロジェクト: aniston/node-bacnet
bool Analog_Input_Object_Name(
    uint32_t object_instance,
    BACNET_CHARACTER_STRING * object_name)
{
    static char text_string[32];        /* okay for single thread */
    bool status = false;
	unsigned index = 0;

	index = Analog_Input_Instance_To_Index(object_instance);
	if (index < MAX_ANALOG_INPUTS) {
        sprintf(text_string, "AI-%lu", object_instance);
        status = characterstring_init_ansi(object_name, text_string);
    }

    return status;
}
コード例 #9
0
ファイル: ai.c プロジェクト: HITliuyu/NES15_HEVC
/* assumption - object has already exists */
int Analog_Input_Encode_Property_APDU(
    uint8_t * apdu,
    uint32_t object_instance,
    BACNET_PROPERTY_ID property,
    uint32_t array_index,
    BACNET_ERROR_CLASS * error_class,
    BACNET_ERROR_CODE * error_code)
{
    int apdu_len = 0;   /* return value */
    BACNET_BIT_STRING bit_string;
    BACNET_CHARACTER_STRING char_string;
    unsigned object_index;

    switch (property) {
        case PROP_OBJECT_IDENTIFIER:
            apdu_len =
                encode_application_object_id(&apdu[0], OBJECT_ANALOG_INPUT,
                object_instance);
            break;
            /* note: Name and Description don't have to be the same.
               You could make Description writable and different.
               Note that Object-Name must be unique in this device */
        case PROP_OBJECT_NAME:
        case PROP_DESCRIPTION:
            characterstring_init_ansi(&char_string,
                Analog_Input_Name(object_instance));
            apdu_len =
                encode_application_character_string(&apdu[0], &char_string);
            break;
        case PROP_OBJECT_TYPE:
            apdu_len =
                encode_application_enumerated(&apdu[0], OBJECT_ANALOG_INPUT);
            break;
        case PROP_PRESENT_VALUE:
            object_index = Analog_Input_Instance_To_Index(object_instance);
            apdu_len =
                encode_application_real(&apdu[0], Present_Value[object_index]);
            break;
        case PROP_STATUS_FLAGS:
            bitstring_init(&bit_string);
            bitstring_set_bit(&bit_string, STATUS_FLAG_IN_ALARM, false);
            bitstring_set_bit(&bit_string, STATUS_FLAG_FAULT, false);
            bitstring_set_bit(&bit_string, STATUS_FLAG_OVERRIDDEN, false);
            bitstring_set_bit(&bit_string, STATUS_FLAG_OUT_OF_SERVICE, false);
            apdu_len = encode_application_bitstring(&apdu[0], &bit_string);
            break;
        case PROP_EVENT_STATE:
            apdu_len =
                encode_application_enumerated(&apdu[0], EVENT_STATE_NORMAL);
            break;
        case PROP_OUT_OF_SERVICE:
            apdu_len = encode_application_boolean(&apdu[0], false);
            break;
        case PROP_UNITS:
            apdu_len = encode_application_enumerated(&apdu[0], UNITS_PERCENT);
            break;
        default:
            *error_class = ERROR_CLASS_PROPERTY;
            *error_code = ERROR_CODE_UNKNOWN_PROPERTY;
            apdu_len = -1;
            break;
    }
    /*  only array properties can have array options */
    if ((apdu_len >= 0) && (array_index != BACNET_ARRAY_ALL)) {
        *error_class = ERROR_CLASS_PROPERTY;
        *error_code = ERROR_CODE_PROPERTY_IS_NOT_AN_ARRAY;
        apdu_len = -1;
    }

    return apdu_len;
}