Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
en:bs2_partialupdateuserfaceex [2022/09/07 11:09]
mark [함수]
en:bs2_partialupdateuserfaceex [2022/09/30 09:21] (current)
kkshin [Sample Code (C#)]
Line 1: Line 1:
-FIXME **This page is not fully translated, yet. Please help completing the translation.**\\ //(remove this paragraph once the translation is finished)// 
- 
 ~~NOTOC~~ ~~NOTOC~~
 [[user_management_api]] > [[BS2_PartialUpdateUserFaceEx]] [[user_management_api]] > [[BS2_PartialUpdateUserFaceEx]]
Line 20: Line 18:
 [[user management api#​BS2UserFaceExBlob|See BS2UserFaceExBlob structure]] [[user management api#​BS2UserFaceExBlob|See BS2UserFaceExBlob structure]]
 </​callout>​ </​callout>​
-==== 파라미터 ​====+==== Parameter ​====
   * [In] ''//​context//''​ : Context   * [In] ''//​context//''​ : Context
-  * [In] ''//​deviceId//''​ : 장치 식별자 +  * [In] ''//​deviceId//''​ : Device ID 
-  * [In] ''//​mask//''​ : 갱신하고자 하는 사용자 부분에 대한 mask+  * [In] ''//​mask//'': ​Mask for the part of the user you want to update
 <WRAP group 50%> <WRAP group 50%>
-^값  ^설명 ​ ^ +^Value  ^Description ​ ^ 
-|0x0002 ​ |사용자설정(개인인증모드,유효기간)  | +|0x0002 ​ |User settings ​(personal authentication modevalidity period)  | 
-|0x0004 ​ |사용자명 ​ | +|0x0004 ​ |User Name  | 
-|0x0008 ​ |이미지  ​|+|0x0008 ​ |Image |
 |0x0010 ​ |PIN  | |0x0010 ​ |PIN  |
-|0x0020 ​ |카드 ​ | +|0x0020 ​ |Card  | 
-|0x0040 ​ |지문 ​ | +|0x0040 ​ |Fingerprint ​ | 
-|0x0080 ​ |얼굴 ​ | +|0x0080 ​ |Face  | 
-|0x0100 ​ |출입그룹 ​ | +|0x0100 ​ |Access group  | 
-|0x0200 ​ |작업코드 ​ | +|0x0200 ​ |Jobcode ​ | 
-|0x0400 ​ |개인메시지 ​ | +|0x0400 ​ |Private Message ​ | 
-|0x0800 ​ |얼굴 ​''​(FSF2,​ BS3)'' ​ | +|0x0800 ​ |Face ''​(FSF2,​ BS3)'' ​ | 
-|0x1000 ​ |사용자설정 ​''​(FSF2,​ BS3)'' ​ |+|0x1000 ​ |User setting ​''​(FSF2,​ BS3)'' ​ |
 </​WRAP>​ </​WRAP>​
-  * [In] ''//​userBlob//''​ : 갱신하고자 하는 사용자 부분 정보 +  * [In] ''//​userBlob//''​ : Partial user information you want to update 
-  * [In] ''//​userCount//''​ : 사용자 개수+  * [In] ''//​userCount//''​ : Number of users
 \\ \\
-==== 반환값 ​==== +==== Return Value ==== 
-성공적으로 수행될 경우 ​''​BS_SDK_SUCCESS''​를 반환하고, ​''​BS2_EVENT_USER_UPDATE_PARTIAL_SUCCESS'' ​이벤트가 발생됩니다. \\ +If successful, return ​''​BS_SDK_SUCCESS'' ​and generate ​''​BS2_EVENT_USER_UPDATE_PARTIAL_SUCCESS'' ​event. \\ 
-실패했을 경우 상응하는 에러 코드를 반환하고장치 발생 오류라면 ​''​BS2_EVENT_USER_UPDATE_PARTIAL_FAIL'' ​이벤트가 발생됩니다. +If it failsit returns a corresponding error code, and if it is a device occurrence error, the event ''​BS2_EVENT_USER_UPDATE_PARTIAL_FAIL'' ​is generated.\\  
-\\  +==== See Also ====
-==== 함께 보기 ​====+
 [[BS2_PartialUpdateUser]]\\ [[BS2_PartialUpdateUser]]\\
 [[BS2_PartialUpdateUserEx]]\\ [[BS2_PartialUpdateUserEx]]\\
Line 52: Line 49:
 [[BS2_PartialUpdateUserSmallEx]]\\ [[BS2_PartialUpdateUserSmallEx]]\\
 [[BS2_PartialUpdateUserFaceEx]] [[BS2_PartialUpdateUserFaceEx]]
-==== 샘플코드(C++) ====+==== Sample Code (C++) ====
 <file cpp sample_partialupdateuserfaceex.cpp>​ <file cpp sample_partialupdateuserfaceex.cpp>​
 BS2_USER_MASK maskWantUpdate = BS2_USER_MASK_SETTING | BS2_USER_MASK_SETTING_EX | BS2_USER_MASK_JOB;​ BS2_USER_MASK maskWantUpdate = BS2_USER_MASK_SETTING | BS2_USER_MASK_SETTING_EX | BS2_USER_MASK_JOB;​
Line 72: Line 69:
  
 if (BS_SDK_SUCCESS != (sdkResult = uc.getUserBlobUserID(user))) if (BS_SDK_SUCCESS != (sdkResult = uc.getUserBlobUserID(user)))
- return sdkResult;+    ​return sdkResult;
  
 if ((maskWantUpdate & BS2_USER_MASK_SETTING) == BS2_USER_MASK_SETTING) if ((maskWantUpdate & BS2_USER_MASK_SETTING) == BS2_USER_MASK_SETTING)
 { {
- if (BS_SDK_SUCCESS != (sdkResult = uc.getUserBlobExpiryDate(setting))) +    ​if (BS_SDK_SUCCESS != (sdkResult = uc.getUserBlobExpiryDate(setting))) 
- return sdkResult;+        return sdkResult;
  
- if (BS_SDK_SUCCESS != (sdkResult = uc.getUserBlobPrivateAuthMode(setting,​ deviceInfo, deviceInfoEx))) +    ​if (BS_SDK_SUCCESS != (sdkResult = uc.getUserBlobPrivateAuthMode(setting,​ deviceInfo, deviceInfoEx))) 
- return sdkResult;+        return sdkResult;
  
- if (BS_SDK_SUCCESS != (sdkResult = uc.getUserBlobSecurityLevel(setting))) +    ​if (BS_SDK_SUCCESS != (sdkResult = uc.getUserBlobSecurityLevel(setting))) 
- return sdkResult;+        return sdkResult;
 } }
  
 if ((maskWantUpdate & BS2_USER_MASK_SETTING_EX) == BS2_USER_MASK_SETTING_EX) if ((maskWantUpdate & BS2_USER_MASK_SETTING_EX) == BS2_USER_MASK_SETTING_EX)
 { {
- if (BS_SDK_SUCCESS != (sdkResult = uc.getUserBlobPrivateAuthModeEx(settingEx,​ deviceInfo, deviceInfoEx))) +    ​if (BS_SDK_SUCCESS != (sdkResult = uc.getUserBlobPrivateAuthModeEx(settingEx,​ deviceInfo, deviceInfoEx))) 
- return sdkResult;+        return sdkResult;
 } }
  
Line 96: Line 93:
 if ((maskWantUpdate & BS2_USER_MASK_JOB) == BS2_USER_MASK_JOB) if ((maskWantUpdate & BS2_USER_MASK_JOB) == BS2_USER_MASK_JOB)
 { {
- if (BS_SDK_SUCCESS != (sdkResult = uc.getUserBlobJobCode(userBlob.job))) +    msg.str(""​);​ 
- return sdkResult;+    msg << "Do you want to change/​delete #" << user.userID << " jobs? (0:Change, 1:​Delete)";​ 
 +    uint32_t selected = Utility::​getInput<​uint32_t>​(msg.str());​ 
 +    switch (selected) 
 +    { 
 +    case 0: 
 +        ​if (BS_SDK_SUCCESS != (sdkResult = uc.getUserBlobJobCode(userBlob.job))) 
 +            return sdkResult
 +        user.infoMask |= BS2_USER_INFO_MASK_JOB_CODE;​ 
 +        break;
  
- user.infoMask |= BS2_USER_INFO_MASK_JOB_CODE;​+    case 1: 
 +    default: 
 +        maskWantUpdate &= ~BS2_USER_MASK_JOB;​ 
 +        break; 
 +    } 
 +
 +else 
 +
 +    // Keep 
 +    ​user.infoMask |= BS2_USER_INFO_MASK_JOB_CODE;​
 } }
  
Line 107: Line 121:
 if ((maskWantUpdate & BS2_USER_MASK_CARD) == BS2_USER_MASK_CARD) if ((maskWantUpdate & BS2_USER_MASK_CARD) == BS2_USER_MASK_CARD)
 { {
- // ...+    msg.str(""​);​ 
 +    msg << "Do you want to change/delete #" << user.userID << " cards? (0:Change, 1:​Delete)";​ 
 +    uint32_t selected = Utility::​getInput<​uint32_t>​(msg.str()); 
 +    switch (selected) 
 +    { 
 +    case 0: 
 +        if (BS_SDK_SUCCESS != (sdkResult = uc.getUserBlobCardInfo(&​userBlob.cardObjs,​ user.numCards,​ id, deviceInfo, deviceInfoEx))) 
 +            return sdkResult;​ 
 +        user.infoMask |= BS2_USER_INFO_MASK_CARD;​ 
 +        break; 
 + 
 +    case 1: 
 +    default: 
 +        // unmasking and numCards = 0; 
 +        maskWantUpdate &= ~BS2_USER_MASK_CARD;​ 
 +        break; 
 +    }
 } }
 +else
 +{
 +    // Keep
 +    user.infoMask |= BS2_USER_INFO_MASK_CARD;​
 +}
 +
  
-int sdkResult = BS2_PartialUpdateUserFaceEx(context,​ id, maskWantUpdate,​ &​userBlob,​ 1);+sdkResult = BS2_PartialUpdateUserFaceEx(context,​ id, maskWantUpdate,​ &​userBlob,​ 1);
 if (BS_SDK_SUCCESS != sdkResult) if (BS_SDK_SUCCESS != sdkResult)
 { {
- TRACE("​BS2_PartialUpdateUserFaceEx call failed: %d", sdkResult);​ +    ​TRACE("​BS2_PartialUpdateUserFaceEx call failed: %d", sdkResult);​ 
- return sdkResult;+    return sdkResult;
 } }
 </​file>​ </​file>​
- +==== Sample Code (C#) ====
-==== 샘플코드(C#) ====+
 <file csharp sample_partialupdateuserfaceex.cs>​ <file csharp sample_partialupdateuserfaceex.cs>​
-BS2_USER_MASK ​mask = (BS2_USER_MASK)BS2UserMaskEnum.SETTING | (BS2_USER_MASK)BS2UserMaskEnum.SETTING_EX | (BS2_USER_MASK)BS2UserMaskEnum.JOB;​+BS2_USER_MASK ​maskWantUpdate ​= (BS2_USER_MASK)BS2UserMaskEnum.SETTING | (BS2_USER_MASK)BS2UserMaskEnum.SETTING_EX | (BS2_USER_MASK)BS2UserMaskEnum.JOB;​
  
 BS2ErrorCode sdkResult = BS2ErrorCode.BS_SDK_SUCCESS;​ BS2ErrorCode sdkResult = BS2ErrorCode.BS_SDK_SUCCESS;​
Line 142: Line 177:
 string userID; string userID;
 if (BS2ErrorCode.BS_SDK_SUCCESS != (sdkResult = getUserBlobUserID(ref userBlob[0].user,​ out userID))) if (BS2ErrorCode.BS_SDK_SUCCESS != (sdkResult = getUserBlobUserID(ref userBlob[0].user,​ out userID)))
- return;+    ​return;
  
-if ((mask & (BS2_USER_MASK)BS2UserMaskEnum.SETTING) == (BS2_USER_MASK)BS2UserMaskEnum.SETTING)+if ((maskWantUpdate ​& (BS2_USER_MASK)BS2UserMaskEnum.SETTING) == (BS2_USER_MASK)BS2UserMaskEnum.SETTING)
 { {
- if (BS2ErrorCode.BS_SDK_SUCCESS != (sdkResult = getUserBlobExpiryDate(ref userBlob[0].setting))) +    ​if (BS2ErrorCode.BS_SDK_SUCCESS != (sdkResult = getUserBlobExpiryDate(ref userBlob[0].setting))) 
- return;+        return;
  
- if (BS2ErrorCode.BS_SDK_SUCCESS != (sdkResult = getUserBlobPrivateAuthMode(ref userBlob[0].setting))) +    ​if (BS2ErrorCode.BS_SDK_SUCCESS != (sdkResult = getUserBlobPrivateAuthMode(ref userBlob[0].setting))) 
- return;+        return;
  
- if (BS2ErrorCode.BS_SDK_SUCCESS != (sdkResult = getUserBlobSecurityLevel(ref userBlob[0].setting))) +    ​if (BS2ErrorCode.BS_SDK_SUCCESS != (sdkResult = getUserBlobSecurityLevel(ref userBlob[0].setting))) 
- return;+        return;
 } }
  
-if ((mask & (BS2_USER_MASK)BS2UserMaskEnum.SETTING_EX) == (BS2_USER_MASK)BS2UserMaskEnum.SETTING_EX)+if ((maskWantUpdate ​& (BS2_USER_MASK)BS2UserMaskEnum.SETTING_EX) == (BS2_USER_MASK)BS2UserMaskEnum.SETTING_EX)
 { {
- if (BS2ErrorCode.BS_SDK_SUCCESS != (sdkResult = getUserBlobPrivateAuthModeEx(ref userBlob[0].settingEx))) +    ​if (BS2ErrorCode.BS_SDK_SUCCESS != (sdkResult = getUserBlobPrivateAuthModeEx(ref userBlob[0].settingEx))) 
- return;+        return;
 } }
  
 // ... // ...
  
-if ((mask & (BS2_USER_MASK)BS2UserMaskEnum.JOB) == (BS2_USER_MASK)BS2UserMaskEnum.JOB)+if ((maskWantUpdate ​& (BS2_USER_MASK)BS2UserMaskEnum.JOB) == (BS2_USER_MASK)BS2UserMaskEnum.JOB)
 { {
- if (BS2ErrorCode.BS_SDK_SUCCESS != (sdkResult = getUserBlobJobCode(ref userBlob[0].job))) +    Console.WriteLine("​Do you want to change/​delete #{0} jobs? (0:Change, 1:​Delete)",​ userID); 
- return;+    Console.Write(">>​ "); 
 +    int selected = Util.GetInput(0);​ 
 +    switch (selected) 
 +    { 
 +        case 0:     // Change jobs 
 +            ​if (BS2ErrorCode.BS_SDK_SUCCESS != (sdkResult = getUserBlobJobCode(ref userBlob[0].job))) 
 +                return;
  
- userBlob[0].user.infoMask |= (byte)BS2UserInfoMaskEnum.JOB_CODE;​+            userBlob[0].user.infoMask |= (byte)BS2UserInfoMaskEnum.JOB_CODE;​ 
 +            break; 
 + 
 +        case 1:     // Delete 
 +        default: 
 +            maskWantUpdate &= ~(BS2_USER_MASK)BS2UserMaskEnum.JOB;​ 
 +            break; 
 +    } 
 +
 +else 
 +
 +    // Keep 
 +    ​userBlob[0].user.infoMask |= (byte)BS2UserInfoMaskEnum.JOB_CODE;​
 } }
- 
-// ... 
  
 userBlob[0].user.numCards = 0; userBlob[0].user.numCards = 0;
-if ((mask & (BS2_USER_MASK)BS2UserMaskEnum.CARD) == (BS2_USER_MASK)BS2UserMaskEnum.CARD)+if ((maskWantUpdate ​& (BS2_USER_MASK)BS2UserMaskEnum.CARD) == (BS2_USER_MASK)BS2UserMaskEnum.CARD)
 { {
- // ...+    Console.WriteLine("​Do you want to change/delete #{0} cards? (0:Change, 1:​Delete)",​ userID); 
 +    Console.Write(">>​ "); 
 +    int selected = Util.GetInput(0);​ 
 +    switch (selected) 
 +    { 
 +        case 0:     // Change cards 
 +            if (BS2ErrorCode.BS_SDK_SUCCESS != (sdkResult = getUserBlobCardInfo(sdkContext,​ deviceID, ref userBlob[0].cardObjs, ref userBlob[0].user.numCards))) 
 +                return; 
 + 
 +            userBlob[0].user.infoMask |= (byte)BS2UserInfoMaskEnum.CARD;​ 
 +            break; 
 + 
 +        case 1:     // Delete cards on the device 
 +        default: 
 +            // unmasking and numCards = 0; 
 +            maskWantUpdate &= ~(BS2_USER_MASK)BS2UserMaskEnum.CARD; 
 +            break; 
 +    }
 } }
 +else
 +{
 +    // Keep
 +    userBlob[0].user.infoMask |= (byte)BS2UserInfoMaskEnum.CARD;​
 +}
 +
 +// ...
  
-sdkResult = (BS2ErrorCode)API.BS2_PartialUpdateUserFaceEx(sdkContext,​ deviceID, ​mask, userBlob, (UInt32)1);+sdkResult = (BS2ErrorCode)API.BS2_PartialUpdateUserFaceEx(sdkContext,​ deviceID, ​maskWantUpdate, userBlob, (UInt32)numOfUser);
 if (BS2ErrorCode.BS_SDK_SUCCESS != sdkResult) if (BS2ErrorCode.BS_SDK_SUCCESS != sdkResult)
  Console.WriteLine("​BS2_PartialUpdateUserFaceEx call failed {0}", sdkResult);  Console.WriteLine("​BS2_PartialUpdateUserFaceEx call failed {0}", sdkResult);
 </​file>​ </​file>​