Configuration API > BS2_SetOsdpStandardActionConfig


[+ 2.9.1] OSDP 장치의 action별 LED/buzzer 설정을 저장합니다.

함수

#include "BS_API.h"
 
int BS2_SetOsdpStandardActionConfig(void* context, uint32_t deviceId, const BS2OsdpStandardActionConfig* config);

파라미터

  • [In] context : Context
  • [In] deviceId : 장치 식별자
  • [Out] config : OSDP 장치의 LED/buzzer 정보를 취득할 포인터

반환값

성공적으로 수행될 경우 BS_SDK_SUCCESS를 반환하고, 에러가 발생할 경우 상응하는 에러 코드를 반환합니다.

함께 보기

샘플코드(C++)

sample_setosdpstandardactionconfig.cpp
BS2OsdpStandardActionConfig config = { 0, };
 
BS2_DEVICE_ID id = Utility::selectDeviceID(deviceList, false, false);
 
bool activate = false;
for (int idx = 0; idx < BS2_OSDP_STANDARD_ACTION_TYPE_COUNT; idx++)
{
	string msg;
	switch (config.actions[idx].actionType)
	{
	case BS2_OSDP_STANDARD_ACTION_TYPE_SUCCESS:
		msg = "SUCCESS";
		break;
	case BS2_OSDP_STANDARD_ACTION_TYPE_FAIL:
		msg = "FAIL";
		break;
	case BS2_OSDP_STANDARD_ACTION_TYPE_WAIT_INPUT:
		msg = "WAIT_INPUT";
		break;
	case BS2_OSDP_STANDARD_ACTION_TYPE_NONE:
	default:
		msg = "NONE";
		break;
	}
	if (Utility::isYes("Do you want to modify the %s action type?", msg.c_str()))
	{
		for (int ledidx = 0; ledidx < BS2_OSDP_STANDARD_ACTION_MAX_LED; ledidx++)
		{
			string msg;
			activate = Utility::isYes("Do you want to activate for LED#%d action?", ledidx);
			config.actions[idx].led[ledidx].use = activate;
 
			if (activate)
			{
				msg = "  Please enter your reader number. Default(0).";
				config.actions[idx].led[ledidx].readerNumber = (uint8_t)Utility::getInput<uint32_t>(msg);
				msg = "  Please enter a led number of the reader. Default(0).";
				config.actions[idx].led[ledidx].ledNumber = (uint8_t)Utility::getInput<uint32_t>(msg);
 
				msg = "  Please enter a temporary command (0: NOP, 1: Cancel, 2: Set)";
				config.actions[idx].led[ledidx].tempCommand = (uint8_t)Utility::getInput<uint32_t>(msg);
				msg = "  Please enter the temporary command on time in ms.";
				config.actions[idx].led[ledidx].tempOnTime = (uint8_t)Utility::getInput<uint32_t>(msg);
				msg = "  Please enter the temporary command off time in ms.";
				config.actions[idx].led[ledidx].tempOffTime = (uint8_t)Utility::getInput<uint32_t>(msg);
				msg = "  Please enter the temporary command on color. (0: Black, 1: Red, 2: Green, 3: Amber, 4: Blue, 5: Magenta, 6: Cyan, 7: White)";
				config.actions[idx].led[ledidx].tempOnColor = (uint8_t)Utility::getInput<uint32_t>(msg);
				msg = "  Please enter the temporary command off color. (0: Black, 1: Red, 2: Green, 3: Amber, 4: Blue, 5: Magenta, 6: Cyan, 7: White)";
				config.actions[idx].led[ledidx].tempOffColor = (uint8_t)Utility::getInput<uint32_t>(msg);
				msg = "  Please enter the temporary run time in ms.";
				config.actions[idx].led[ledidx].tempRunTime = (uint16_t)Utility::getInput<uint32_t>(msg);
 
				msg = "  Please enter a permanent command (0: NOP, 1: Cancel, 2: Set)";
				config.actions[idx].led[ledidx].permCommand = (uint8_t)Utility::getInput<uint32_t>(msg);
				msg = "  Please enter the permanent on time in ms.";
				config.actions[idx].led[ledidx].permOnTime = (uint8_t)Utility::getInput<uint32_t>(msg);
				msg = "  Please enter the permanent off time in ms.";
				config.actions[idx].led[ledidx].permOffTime = (uint8_t)Utility::getInput<uint32_t>(msg);
				msg = "  Please enter the permanent on color. (0: Black, 1: Red, 2: Green, 3: Amber, 4: Blue, 5: Magenta, 6: Cyan, 7: White)";
				config.actions[idx].led[ledidx].permOnColor = (uint8_t)Utility::getInput<uint32_t>(msg);
				msg = "  Please enter the permanent off color. (0: Black, 1: Red, 2: Green, 3: Amber, 4: Blue, 5: Magenta, 6: Cyan, 7: White)";
				config.actions[idx].led[ledidx].permOffColor = (uint8_t)Utility::getInput<uint32_t>(msg);
			}
		}
 
		activate = Utility::isYes("Do you want to activate for buzzer action?");
		config.actions[idx].buzzer.use = activate;
		if (activate)
		{
			msg = "  Please enter your reader number. Default(0).";
			config.actions[idx].buzzer.readerNumber = (uint8_t)Utility::getInput<uint32_t>(msg);
			msg = "  Please enter a tone type (0: None, 1: Off, 2: On)";
			config.actions[idx].buzzer.tone = (uint8_t)Utility::getInput<uint32_t>(msg);
			msg = "  Please enter the buzzer turn-on time in ms.";
			config.actions[idx].buzzer.onTime = (uint8_t)Utility::getInput<uint32_t>(msg);
			msg = "  Please enter the buzzer turn-off time in ms.";
			config.actions[idx].buzzer.offTime = (uint8_t)Utility::getInput<uint32_t>(msg);
			msg = "  Please enter the number of cycle the buzzer on and off.";
			config.actions[idx].buzzer.numOfCycle = (uint8_t)Utility::getInput<uint32_t>(msg);
		}
	}
}
 
int sdkResult = BS2_SetOsdpStandardActionConfig(context_, id, &config);
if (BS_SDK_SUCCESS != sdkResult)
	printf("BS2_SetOsdpStandardActionConfig call failed: %d", sdkResult);
 
return sdkResult;

샘플코드(C#)

sample_setosdpstandardactionconfig.cs
BS2OsdpStandardActionConfig config;
bool activate = false;
for (int idx = 0; idx < (int)BS2OsdpStandardActionType.COUNT; idx++)
{
	Console.WriteLine("Do you want to modify the {0} action type? [Y/n]", (BS2OsdpStandardActionType)config.actions[idx].actionType);
	Console.Write(">> ");
	if (Util.IsYes())
	{
		for (int ledidx = 0; ledidx < BS2Environment.BS2_OSDP_STANDARD_ACTION_MAX_LED; ledidx++)
		{
			string tempStr = String.Format("LED#{0}", ledidx);
			string msgStr = String.Format("Do you want to activate for {0} action? [Y/n]", tempStr);
			Util.HighlightLine(msgStr, tempStr);
			Console.Write(">> ");
			activate = Util.IsYes();
			config.actions[idx].led[ledidx].use = Convert.ToByte(activate);
 
			if (activate)
			{
				Util.HighlightLine("  Please enter your reader number. Default(0).", "reader number");
				Console.Write("  >>>> ");
				config.actions[idx].led[ledidx].readerNumber = Util.GetInput((byte)0);
				Util.HighlightLine("  Please enter a led number of the reader. Default(0).", "led number");
				Console.Write("  >>>> ");
				config.actions[idx].led[ledidx].ledNumber = Util.GetInput((byte)0);
 
				Util.HighlightLine("  Please enter a temporary command (0: NOP, 1: Cancel, 2: Set)", "temporary command");
				Console.Write("  >>>> ");
				config.actions[idx].led[ledidx].tempCommand = Util.GetInput((byte)BS2OsdpStandardLEDCommand.NOP);
				Util.HighlightLine("  Please enter the temporary command on time in ms.", "on time");
				Console.Write("  >>>> ");
				config.actions[idx].led[ledidx].tempOnTime = Util.GetInput((byte)10);
				Util.HighlightLine("  Please enter the temporary command off time in ms.", "off time");
				Console.Write("  >>>> ");
				config.actions[idx].led[ledidx].tempOffTime = Util.GetInput((byte)0);
				Util.HighlightLine("  Please enter the temporary command on color. (0: Black, 1: Red, 2: Green, 3: Amber, 4: Blue, 5: Magenta, 6: Cyan, 7: White)", "on color");
				Console.Write("  >>>> ");
				config.actions[idx].led[ledidx].tempOnColor = Util.GetInput((byte)BS2OsdpStandardColor.GREEN);
				Util.HighlightLine("  Please enter the temporary command off color. (0: Black, 1: Red, 2: Green, 3: Amber, 4: Blue, 5: Magenta, 6: Cyan, 7: White)", "off color");
				Console.Write("  >>>> ");
				config.actions[idx].led[ledidx].tempOffColor = Util.GetInput((byte)BS2OsdpStandardColor.BLACK);
				Util.HighlightLine("  Please enter the temporary run time in ms.", "run time");
				Console.Write("  >>>> ");
				config.actions[idx].led[ledidx].tempRunTime = Util.GetInput((UInt16)10);
 
				Util.HighlightLine("  Please enter a permanent command (0: NOP, 1: Cancel, 2: Set)", "permanent command");
				Console.Write("  >>>> ");
				config.actions[idx].led[ledidx].permCommand = Util.GetInput((byte)BS2OsdpStandardLEDCommand.NOP);
				Util.HighlightLine("  Please enter the permanent on time in ms.", "on time");
				Console.Write("  >>>> ");
				config.actions[idx].led[ledidx].permOnTime = Util.GetInput((byte)0);
				Util.HighlightLine("  Please enter the permanent off time in ms.", "off time");
				Console.Write("  >>>> ");
				config.actions[idx].led[ledidx].permOffTime = Util.GetInput((byte)0);
				Util.HighlightLine("  Please enter the permanent on color. (0: Black, 1: Red, 2: Green, 3: Amber, 4: Blue, 5: Magenta, 6: Cyan, 7: White)", "on color");
				Console.Write("  >>>> ");
				config.actions[idx].led[ledidx].permOnColor = Util.GetInput((byte)BS2OsdpStandardColor.BLACK);
				Util.HighlightLine("  Please enter the permanent off color. (0: Black, 1: Red, 2: Green, 3: Amber, 4: Blue, 5: Magenta, 6: Cyan, 7: White)", "off color");
				Console.Write("  >>>> ");
				config.actions[idx].led[ledidx].permOffColor = Util.GetInput((byte)BS2OsdpStandardColor.BLACK);
			}
		}
 
		Util.HighlightLine("Do you want to activate for buzzer action? [Y/n]", "buzzer");
		Console.Write(">> ");
		activate = Util.IsYes();
		config.actions[idx].buzzer.use = Convert.ToByte(activate);
		if (activate)
		{
			Util.HighlightLine("  Please enter your reader number. Default(0).", "reader number");
			Console.Write("  >>>> ");
			config.actions[idx].buzzer.readerNumber = Util.GetInput((byte)0);
 
			Util.HighlightLine("  Please enter a tone type (0: None, 1: Off, 2: On)", "tone");
			Console.Write("  >>>> ");
			config.actions[idx].buzzer.tone = Util.GetInput((byte)BS2OsdpStandardTone.ON);
			Util.HighlightLine("  Please enter the buzzer turn-on time in ms.", "on time");
			Console.Write("  >>>> ");
			config.actions[idx].buzzer.onTime = Util.GetInput((byte)2);
			Util.HighlightLine("  Please enter the buzzer turn-off time in ms.", "off time");
			Console.Write("  >>>> ");
			config.actions[idx].buzzer.offTime = Util.GetInput((byte)0);
			Util.HighlightLine("  Please enter the number of cycle the buzzer on and off.", "number of cycle");
			Console.Write("  >>>> ");
			config.actions[idx].buzzer.numOfCycle = Util.GetInput((byte)1);
		}
	}
}
 
Console.WriteLine("Trying to set OsdpStandardActionConfig");
BS2ErrorCode result = (BS2ErrorCode)API.BS2_SetOsdpStandardActionConfig(sdkContext, deviceID, ref config);
if (result != BS2ErrorCode.BS_SDK_SUCCESS)
	Console.WriteLine("Got error({0}).", result);
else
	Console.WriteLine("Call success.");
 
return result;