~~NOTOC~~
[[configuration_api]] > [[BS2_SetOsdpStandardActionConfig]]
----
===== BS2_SetOsdpStandardActionConfig =====
[+ 2.9.1] OSDP 장치의 action별 LED/buzzer 설정을 저장합니다.
==== 함수 ====
#include "BS_API.h"
int BS2_SetOsdpStandardActionConfig(void* context, uint32_t deviceId, const BS2OsdpStandardActionConfig* config);
[[configuration api#BS2OsdpStandardActionConfig|BS2OsdpStandardActionConfig 구조체 보기]]
==== 파라미터 ====
* [In] ''//context//'' : Context
* [In] ''//deviceId//'' : 장치 식별자
* [Out] ''//config//'' : OSDP 장치의 LED/buzzer 정보를 취득할 포인터
==== 반환값 ====
성공적으로 수행될 경우 ''BS_SDK_SUCCESS''를 반환하고, 에러가 발생할 경우 상응하는 에러 코드를 반환합니다.
==== 함께 보기 ====
[[BS2_GetOsdpStandardActionConfig]]
==== 샘플코드(C++) ====
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(msg);
msg = " Please enter a led number of the reader. Default(0).";
config.actions[idx].led[ledidx].ledNumber = (uint8_t)Utility::getInput(msg);
msg = " Please enter a temporary command (0: NOP, 1: Cancel, 2: Set)";
config.actions[idx].led[ledidx].tempCommand = (uint8_t)Utility::getInput(msg);
msg = " Please enter the temporary command on time in ms.";
config.actions[idx].led[ledidx].tempOnTime = (uint8_t)Utility::getInput(msg);
msg = " Please enter the temporary command off time in ms.";
config.actions[idx].led[ledidx].tempOffTime = (uint8_t)Utility::getInput(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(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(msg);
msg = " Please enter the temporary run time in ms.";
config.actions[idx].led[ledidx].tempRunTime = (uint16_t)Utility::getInput(msg);
msg = " Please enter a permanent command (0: NOP, 1: Cancel, 2: Set)";
config.actions[idx].led[ledidx].permCommand = (uint8_t)Utility::getInput(msg);
msg = " Please enter the permanent on time in ms.";
config.actions[idx].led[ledidx].permOnTime = (uint8_t)Utility::getInput(msg);
msg = " Please enter the permanent off time in ms.";
config.actions[idx].led[ledidx].permOffTime = (uint8_t)Utility::getInput(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(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(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(msg);
msg = " Please enter a tone type (0: None, 1: Off, 2: On)";
config.actions[idx].buzzer.tone = (uint8_t)Utility::getInput(msg);
msg = " Please enter the buzzer turn-on time in ms.";
config.actions[idx].buzzer.onTime = (uint8_t)Utility::getInput(msg);
msg = " Please enter the buzzer turn-off time in ms.";
config.actions[idx].buzzer.offTime = (uint8_t)Utility::getInput(msg);
msg = " Please enter the number of cycle the buzzer on and off.";
config.actions[idx].buzzer.numOfCycle = (uint8_t)Utility::getInput(msg);
}
}
}
int sdkResult = BS2_SetOsdpStandardActionConfig(context_, id, &config);
if (BS_SDK_SUCCESS != sdkResult)
printf("BS2_SetOsdpStandardActionConfig call failed: %d", sdkResult);
return sdkResult;
==== 샘플코드(C#) ====
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;