├── app
├── .gitignore
├── src
│ └── main
│ │ ├── res
│ │ ├── drawable
│ │ │ ├── bt0.png
│ │ │ ├── earth.png
│ │ │ ├── pasmo.png
│ │ │ ├── suica.png
│ │ │ ├── bl_grey.png
│ │ │ ├── finger.png
│ │ │ ├── app_icon.png
│ │ │ ├── bl_green.png
│ │ │ ├── face_tips.png
│ │ │ ├── gif_finger.gif
│ │ │ ├── ic_warning.png
│ │ │ ├── icon_lock.png
│ │ │ ├── keyboard.png
│ │ │ ├── palm_tips.png
│ │ │ ├── small_icon.png
│ │ │ ├── wifi_green.png
│ │ │ ├── wifi_grey.png
│ │ │ ├── camera_palm.png
│ │ │ ├── facepro_tips.png
│ │ │ ├── icon_unlock.png
│ │ │ ├── img_knob_3x.png
│ │ │ ├── palmpro_tips.png
│ │ │ ├── icon_logining.png
│ │ │ ├── icon_nosetting.png
│ │ │ ├── icon_nosignal.png
│ │ │ ├── icon_opensensor.png
│ │ │ ├── icon_waitgatt.png
│ │ │ ├── swtich_locked.png
│ │ │ ├── swtich_logining.png
│ │ │ ├── swtich_no_ble.png
│ │ │ ├── swtich_unlocked.png
│ │ │ ├── swtich_waitgatt.png
│ │ │ ├── icon_receiveblee.png
│ │ │ ├── matter_sym_rgb_green.png
│ │ │ ├── swtich_receive_ble.png
│ │ │ ├── search_background.xml
│ │ │ ├── dialog_rounded_bg.xml
│ │ │ ├── spacer.xml
│ │ │ ├── alert_background_dark.xml
│ │ │ ├── alert_background_light.xml
│ │ │ ├── bg_dialog.xml
│ │ │ ├── ic_icons_outlined_me_s.xml
│ │ │ ├── ic_tick_select.xml
│ │ │ ├── ic_wifi_select.xml
│ │ │ ├── ic_world_select.xml
│ │ │ ├── ic_icons_outlined_contacts_s.xml
│ │ │ ├── svg_arrow_down.xml
│ │ │ ├── round_red.xml
│ │ │ ├── menu_select.xml
│ │ │ ├── ic_arrow.xml
│ │ │ ├── ic_arrow_gray.xml
│ │ │ ├── svg_bot2_view.xml
│ │ │ ├── ic_cloud.xml
│ │ │ ├── svg_restart.xml
│ │ │ ├── progress_red.xml
│ │ │ ├── ic_eye_on.xml
│ │ │ ├── ic_icons_outlined_me_y.xml
│ │ │ ├── progress_blue.xml
│ │ │ ├── ic_search.xml
│ │ │ ├── ic_icons_filled_close.xml
│ │ │ ├── ic_icons_filled_close_white.xml
│ │ │ ├── ic_icon_delete.xml
│ │ │ ├── arrow.xml
│ │ │ ├── ic_tick_blue.xml
│ │ │ ├── ic_tick_grey.xml
│ │ │ ├── bg_btn_confirm.xml
│ │ │ ├── bg_btn_warning.xml
│ │ │ ├── ic_ap_alert.xml
│ │ │ ├── round_blue_no.xml
│ │ │ ├── ic_icon_unlock_uncheck.xml
│ │ │ ├── round_blue.xml
│ │ │ ├── ic_icons_filled_album.xml
│ │ │ ├── ic_icons_filled_more.xml
│ │ │ ├── ic_icons_outlined_share.xml
│ │ │ ├── find_friend.xml
│ │ │ ├── round_red_unlock_all.xml
│ │ │ ├── ic_icon_lock_uncheck.xml
│ │ │ ├── round_blue_lock_all.xml
│ │ │ ├── ic_keychain_original.xml
│ │ │ ├── click_stop.xml
│ │ │ ├── ic_eye_off.xml
│ │ │ ├── ic_icons_outlined_addoutline.xml
│ │ │ ├── ic_icons_outlined_contacts_y.xml
│ │ │ └── circular_progress.xml
│ │ ├── values
│ │ │ ├── ids.xml
│ │ │ └── attrs.xml
│ │ ├── mipmap-hdpi
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher_round.png
│ │ │ ├── qrcode_default_scan_line.png
│ │ │ └── qrcode_default_grid_scan_line.png
│ │ ├── mipmap-xxxhdpi
│ │ │ └── ic_launcher_round.png
│ │ ├── xml
│ │ │ ├── provider_paths.xml
│ │ │ └── nfc_tech_filter.xml
│ │ ├── color
│ │ │ └── tv_color_red_gray.xml
│ │ ├── anim
│ │ │ ├── fade_in.xml
│ │ │ ├── fade_out.xml
│ │ │ ├── dispose_center.xml
│ │ │ ├── show_up_center.xml
│ │ │ ├── show_down_center.xml
│ │ │ ├── shake.xml
│ │ │ ├── elastic_center.xml
│ │ │ ├── overshoot_center.xml
│ │ │ ├── modal_out.xml
│ │ │ ├── slide_out_up.xml
│ │ │ └── slide_in_bottom.xml
│ │ ├── layout
│ │ │ ├── fg_compose_webview.xml
│ │ │ ├── layout_custom_list.xml
│ │ │ ├── dialog_wheel_picker.xml
│ │ │ ├── adp_bot_item_view.xml
│ │ │ ├── action_layout_dark.xml
│ │ │ ├── action_layout_light.xml
│ │ │ └── pop_layout_copy.xml
│ │ ├── animator
│ │ │ └── cloud_dowload.xml
│ │ ├── navigation
│ │ │ └── nav_graph.xml
│ │ └── menu
│ │ │ └── bottom_nav.xml
│ │ ├── assets
│ │ └── firmware
│ │ │ ├── remote_30_14_625867.zip
│ │ │ ├── sesame5_30_5_848a2d.zip
│ │ │ ├── sesame_221_0_8c080c.zip
│ │ │ ├── sesame_421_4_50ce5b.zip
│ │ │ ├── remoten_30_15_d623ac.zip
│ │ │ ├── sesame5pro_30_7_848a2d.zip
│ │ │ ├── sesame5us_30_16_848a2d.zip
│ │ │ ├── sesamebot1_21_2_369eb9.zip
│ │ │ ├── opensensor1_30_8_b634a9.zip
│ │ │ ├── opensensor2_30_24_b634a9.zip
│ │ │ ├── sesame6pro_30_21_07ca91.zip
│ │ │ ├── sesamebike1_21_3_d7162a.zip
│ │ │ ├── sesamebike2_30_6_990e7f.zip
│ │ │ ├── sesamebot2_30_17_990e7f.zip
│ │ │ ├── sesameface1_30_19_5c6590.zip
│ │ │ ├── bleconnector_30_11_01be3d.zip
│ │ │ ├── sesameface1ai_30_23_43ca70.zip
│ │ │ ├── sesameface1pro_30_18_5c6590.zip
│ │ │ ├── sesametouch1_30_10_5aac19.zip
│ │ │ ├── sesametouch1pro_30_9_5aac19.zip
│ │ │ └── sesameface1proai_30_22_43ca70.zip
│ │ └── java
│ │ ├── co
│ │ ├── utils
│ │ │ ├── alertview
│ │ │ │ ├── enums
│ │ │ │ │ ├── AlertTheme.kt
│ │ │ │ │ ├── AlertStyle.kt
│ │ │ │ │ └── AlertActionStyle.kt
│ │ │ │ ├── interfaces
│ │ │ │ │ └── AlertActionListener.kt
│ │ │ │ └── objects
│ │ │ │ │ └── AlertAction.kt
│ │ │ ├── materialtextfield
│ │ │ │ └── custom
│ │ │ │ │ └── AnimatedRectF.kt
│ │ │ ├── balloon
│ │ │ │ ├── ArrowOrientation.kt
│ │ │ │ ├── OnBalloonDismissListener.kt
│ │ │ │ ├── BalloonAnimation.kt
│ │ │ │ ├── OnBalloonClickListener.kt
│ │ │ │ └── OnBalloonOutsideTouchListener.kt
│ │ │ └── ContainerPaddingManager.kt
│ │ └── candyhouse
│ │ │ ├── server
│ │ │ ├── dto
│ │ │ │ ├── IrDeviceDeleteRequest.kt
│ │ │ │ ├── IrDeviceStateRequest.kt
│ │ │ │ ├── IrDeviceModifyRequest.kt
│ │ │ │ ├── IrMatchCodeRequest.kt
│ │ │ │ ├── IrRemoteInfoRespond.kt
│ │ │ │ ├── IrDeviceRemoteKeyRequest.kt
│ │ │ │ ├── IrDeviceAddRequest.kt
│ │ │ │ └── IrLearnedDataAddRequest.kt
│ │ │ └── CHIRAPIClient.kt
│ │ │ └── app
│ │ │ ├── base
│ │ │ └── view
│ │ │ │ └── IBaseView.kt
│ │ │ ├── tabs
│ │ │ └── devices
│ │ │ │ ├── hub3
│ │ │ │ └── adapter
│ │ │ │ │ └── provider
│ │ │ │ │ ├── Ssm2DevicesAdapterProvider.kt
│ │ │ │ │ └── Hub3IrAdapterProvider.kt
│ │ │ │ ├── model
│ │ │ │ └── CHLoginViewModel.kt
│ │ │ │ └── ssmbike
│ │ │ │ └── setting
│ │ │ │ └── SesameBikeSettingFG.kt
│ │ │ ├── App.kt
│ │ │ └── ext
│ │ │ ├── AppLifecycleObserver.kt
│ │ │ └── TokenManager.kt
│ │ └── cn
│ │ └── bingoogolapple
│ │ └── qrcode
│ │ └── core
│ │ ├── BGScanResult.java
│ │ └── BarcodeType.java
└── google-services.json
├── doc
├── class
│ ├── CHSesameLock_jp.md
│ ├── CHSesameTouchProDelegate_jp.md
│ ├── a.jpg
│ ├── CHBleManager .md
│ ├── utils.md
│ ├── CHDeviceLoginStatus_jp.md
│ ├── CHSesameOS3Publish_jp.md
│ ├── CHSesameOS3Publish.md
│ ├── CHSesameBike2.md
│ ├── CHSesameBike2_jp.md
│ ├── CHSesameBike_jp.md
│ ├── CHSesameBike.md
│ ├── CHDeviceLoginStatus.md
│ ├── NSError.md
│ ├── NSError_jp.md
│ ├── CHWifiModule2MechSettings.md
│ ├── SesameBleReceiver.md
│ ├── CHWifiModule2MechSettings_jp.md
│ ├── SesameOS3Payload.md
│ ├── SesameOS3Payload_jp.md
│ ├── CHSesameSensorDelegate.md
│ ├── CHDeviceStatusDelegate_jp.md
│ ├── SesameBleTransmit.md
│ ├── CHDeviceStatusDelegate.md
│ ├── CHSesameSensorDelegate_jp.md
│ ├── CHSesameConnector.md
│ ├── SSM3PublishPayload.md
│ ├── SesameBleTransmit_jp.md
│ ├── CHSesameConnector_jp.md
│ ├── DeviceSegmentType_jp.md
│ ├── CHBaseAdv.md
│ ├── SesameNotifypayload.md
│ ├── SSM3PublishPayload_jp.md
│ ├── CHWifiModule2_jp.md
│ ├── SSM2OpCode_jp.md
│ ├── CHSesameSensor.md
│ ├── DeviceSegmentType.md
│ ├── CHDeviceUtil_jp.md
│ ├── CHSesameLock.md
│ ├── CHBaseAdv_jp.md
│ ├── CHSesameSensor_jp.md
│ ├── CHDeviceUtil.md
│ ├── SSM2ResponsePayload.md
│ ├── SSM3ResponsePayload.md
│ ├── SesameNotifypayload_jp.md
│ ├── CHSesameBotMechSettings.md
│ ├── SSM2ResponsePayload_jp.md
│ ├── SSM3ResponsePayload_jp.md
│ ├── CHSesameBike2MechStatus.md
│ ├── CHSesameBike2MechStatus_jp.md
│ ├── CHSesameTouchCard.md
│ └── CHSesameTouchCard_jp.md
├── bleconnect
│ ├── randomcode.puml
│ ├── SesameOs3.jpg
│ ├── timestamp.puml
│ ├── login.puml
│ ├── data_send.puml
│ ├── register.puml
│ ├── data_receive.puml
│ └── timestamp.md
├── bleprotocol
│ ├── firmware.png
│ ├── firmwareUpgradation.md
│ └── firmwareUpgradation_ja.md
├── img
│ └── SesameSDK_20231201.png
├── command
│ ├── autolock.puml
│ ├── magnet.puml
│ ├── reset.puml
│ ├── unlock.puml
│ ├── ssm5version.puml
│ ├── lock.puml
│ ├── history.puml
│ ├── configureLockPosition.puml
│ ├── sesame_open_sensor_jp.md
│ ├── sesame_open_sensor.md
│ ├── sesamebike2fun.md
│ ├── sesamebike2fun_jp.md
│ ├── magnet_jp.md
│ ├── magnet.md
│ ├── sesameblot.md
│ ├── autolock_jp.md
│ ├── autolock.md
│ ├── reset_jp.md
│ └── reset.md
├── wm2
│ ├── finger_get.puml
│ ├── setwifipw_jp.md
│ └── setwifipw.md
├── touch
│ ├── finger_get.puml
│ ├── card_last.md
│ ├── finger_delete_jp.md
│ ├── card_delete.md
│ ├── kbpc_delete_jp.md
│ ├── kbpc_mode_get_jp.md
│ ├── card_delete_jp.md
│ ├── card_model_get.md
│ ├── finger_mode_set_jp.md
│ ├── finger_delete.md
│ ├── card_model_get_jp.md
│ ├── card_model_set_jp.md
│ ├── finger_mode_get_jp.md
│ ├── kbpc_delete.md
│ ├── kbpc_mode_set_jp.md
│ ├── finger_mode_get.md
│ ├── kbpc_mode_get.md
│ ├── card_model_set.md
│ └── finger_mode_set.md
├── sesame_code_ja.md
├── sesame_code.md
├── encryption
│ └── ble_encryption.puml
├── sesame_code_cls.md
├── sesame_code_cls_ja.md
├── ble_product_serials.md
├── ble_product_serials_jp.md
├── product_structure.md
└── product_structure_ja.md
├── sesame-sdk
├── .gitignore
└── src
│ └── main
│ └── java
│ └── co
│ └── candyhouse
│ └── sesame
│ ├── server
│ ├── CHPrivateHub3WebSocketClient.kt
│ ├── dto
│ │ ├── CHBatteryDataReq.kt
│ │ ├── CHHistoryUploadRes.kt
│ │ ├── CHSS2RegisterRes.kt
│ │ ├── CHSS2RegisterReq.kt
│ │ ├── SubscriptionRequest.kt
│ │ ├── AuthenticationDataWrapper.kt
│ │ ├── CHFaceNameRequest.kt
│ │ ├── CHPalmNameRequest.kt
│ │ ├── CHCardNameRequest.kt
│ │ ├── CHHistoryUploadRequest.kt
│ │ ├── CHFingerPrintNameRequest.kt
│ │ ├── CHKeyBoardPassCodeNameRequest.kt
│ │ ├── CredentialListResponse.kt
│ │ └── CHSesameShadow.kt
│ ├── HttpRespondCode.kt
│ └── CHIotManagerPublic.kt
│ ├── open
│ ├── device
│ │ ├── sesameBiometric
│ │ │ └── capability
│ │ │ │ ├── openSensor
│ │ │ │ ├── CHOpenSensorCapable.kt
│ │ │ │ └── CHOpenSensorCapableImpl.kt
│ │ │ │ ├── baseCapbale
│ │ │ │ ├── CHEventHandler.kt
│ │ │ │ ├── CHBaseCapability.kt
│ │ │ │ ├── CHEventCapability.kt
│ │ │ │ ├── CHCapabilitySupport.kt
│ │ │ │ └── CHDataSynchronizeCapable.kt
│ │ │ │ ├── connect
│ │ │ │ ├── CHDeviceConnectDelegate.kt
│ │ │ │ └── CHDeviceConnectCapable.kt
│ │ │ │ ├── remoteNano
│ │ │ │ ├── CHRemoteNanoDelegate.kt
│ │ │ │ └── CHRemoteNanoCapable.kt
│ │ │ │ ├── card
│ │ │ │ └── CHCardDelegate.kt
│ │ │ │ ├── passcode
│ │ │ │ └── CHPassCodeDelegate.kt
│ │ │ │ ├── face
│ │ │ │ ├── CHFaceDelegate.kt
│ │ │ │ └── CHFaceCapable.kt
│ │ │ │ ├── fingerPrint
│ │ │ │ └── CHFingerPrintDelegate.kt
│ │ │ │ └── palm
│ │ │ │ ├── CHPalmDelegate.kt
│ │ │ │ └── CHPalmCapable.kt
│ │ ├── CHSesameBike.kt
│ │ └── CHSesameBike2.kt
│ └── CHConfiguration.kt
│ ├── utils
│ ├── aescmac
│ │ └── MAC.kt
│ └── EventExtensions.kt
│ ├── ble
│ └── os2
│ │ └── base
│ │ └── CHSesameOS2.kt
│ └── BaseFG.kt
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── install_start.sh
├── app.properties
└── settings.gradle
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/doc/class/CHSesameLock_jp.md:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/sesame-sdk/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/doc/class/CHSesameTouchProDelegate_jp.md:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/doc/class/a.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/doc/class/a.jpg
--------------------------------------------------------------------------------
/doc/bleconnect/randomcode.puml:
--------------------------------------------------------------------------------
1 | @startuml
2 |
3 | Device --> APP: response_command(8,14,randomcode)
4 | @enduml
5 |
--------------------------------------------------------------------------------
/doc/bleconnect/SesameOs3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/doc/bleconnect/SesameOs3.jpg
--------------------------------------------------------------------------------
/doc/bleprotocol/firmware.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/doc/bleprotocol/firmware.png
--------------------------------------------------------------------------------
/doc/img/SesameSDK_20231201.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/doc/img/SesameSDK_20231201.png
--------------------------------------------------------------------------------
/doc/command/autolock.puml:
--------------------------------------------------------------------------------
1 | @startuml
2 | APP -> Device: send_command(6,89)
3 | Device --> APP: response_command(6,7,89,status)
4 | @enduml
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bt0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/bt0.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/earth.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/earth.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/pasmo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/pasmo.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/suica.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/suica.png
--------------------------------------------------------------------------------
/doc/command/magnet.puml:
--------------------------------------------------------------------------------
1 | @startuml
2 | APP -> Device: send_command(17)
3 | Device --> APP: response_command(response,command,status)
4 | @enduml
5 |
--------------------------------------------------------------------------------
/doc/command/reset.puml:
--------------------------------------------------------------------------------
1 | @startuml
2 | APP -> Device: send_command(104)
3 | Device --> APP: response_command(response,command,status)
4 | @enduml
5 |
--------------------------------------------------------------------------------
/doc/command/unlock.puml:
--------------------------------------------------------------------------------
1 | @startuml
2 | APP -> Device: send_command(3,80,payload))
3 | Device --> APP: response_command(3,7,80,status)
4 | @enduml
5 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bl_grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/bl_grey.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/finger.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/finger.png
--------------------------------------------------------------------------------
/doc/command/ssm5version.puml:
--------------------------------------------------------------------------------
1 | @startuml
2 | APP -> Device: send_command(5)
3 | Device --> APP: response_command(response,command,status)
4 | @enduml
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/app_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/app_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bl_green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/bl_green.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/face_tips.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/face_tips.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/gif_finger.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/gif_finger.gif
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_warning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/ic_warning.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/icon_lock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/icon_lock.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/keyboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/keyboard.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/palm_tips.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/palm_tips.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/small_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/small_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/wifi_green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/wifi_green.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/wifi_grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/wifi_grey.png
--------------------------------------------------------------------------------
/doc/command/lock.puml:
--------------------------------------------------------------------------------
1 | @startuml
2 | APP -> Device: send_command(82,historyTag))
3 | Device --> APP: response_command(response,command,status)
4 | @enduml
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/camera_palm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/camera_palm.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/facepro_tips.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/facepro_tips.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/icon_unlock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/icon_unlock.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/img_knob_3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/img_knob_3x.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/palmpro_tips.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/palmpro_tips.png
--------------------------------------------------------------------------------
/app/src/main/res/values/ids.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/doc/bleconnect/timestamp.puml:
--------------------------------------------------------------------------------
1 | @startuml
2 | APP -> Device: send_command(8,timestamp)
3 | Device --> APP: response_command(response,command,status)
4 | @enduml
5 |
--------------------------------------------------------------------------------
/doc/command/history.puml:
--------------------------------------------------------------------------------
1 | @startuml
2 | APP -> Device: send_command(4,isPeek))
3 | Device --> APP: response_command(response,command,status,payload)
4 | @enduml
5 |
--------------------------------------------------------------------------------
/doc/wm2/finger_get.puml:
--------------------------------------------------------------------------------
1 | @startuml
2 | APP --> Device: send_command(3,ssid_name)
3 | Device --> APP: response_command(7,3,status)
4 |
5 |
6 |
7 | @enduml
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/icon_logining.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/icon_logining.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/icon_nosetting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/icon_nosetting.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/icon_nosignal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/icon_nosignal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/icon_opensensor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/icon_opensensor.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/icon_waitgatt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/icon_waitgatt.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/swtich_locked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/swtich_locked.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/swtich_logining.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/swtich_logining.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/swtich_no_ble.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/swtich_no_ble.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/swtich_unlocked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/swtich_unlocked.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/swtich_waitgatt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/swtich_waitgatt.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/icon_receiveblee.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/icon_receiveblee.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/matter_sym_rgb_green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/matter_sym_rgb_green.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/swtich_receive_ble.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/drawable/swtich_receive_ble.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/server/CHPrivateHub3WebSocketClient.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.server
2 |
3 | interface CHPrivateHub3WebSocketClient {
4 | }
--------------------------------------------------------------------------------
/app/src/main/assets/firmware/remote_30_14_625867.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/assets/firmware/remote_30_14_625867.zip
--------------------------------------------------------------------------------
/app/src/main/assets/firmware/sesame5_30_5_848a2d.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/assets/firmware/sesame5_30_5_848a2d.zip
--------------------------------------------------------------------------------
/app/src/main/assets/firmware/sesame_221_0_8c080c.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/assets/firmware/sesame_221_0_8c080c.zip
--------------------------------------------------------------------------------
/app/src/main/assets/firmware/sesame_421_4_50ce5b.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/assets/firmware/sesame_421_4_50ce5b.zip
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/assets/firmware/remoten_30_15_d623ac.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/assets/firmware/remoten_30_15_d623ac.zip
--------------------------------------------------------------------------------
/app/src/main/assets/firmware/sesame5pro_30_7_848a2d.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/assets/firmware/sesame5pro_30_7_848a2d.zip
--------------------------------------------------------------------------------
/app/src/main/assets/firmware/sesame5us_30_16_848a2d.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/assets/firmware/sesame5us_30_16_848a2d.zip
--------------------------------------------------------------------------------
/app/src/main/assets/firmware/sesamebot1_21_2_369eb9.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/assets/firmware/sesamebot1_21_2_369eb9.zip
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/xml/provider_paths.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/server/dto/CHBatteryDataReq.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.server.dto
2 |
3 | internal data class CHBatteryDataReq(var payload: String)
4 |
--------------------------------------------------------------------------------
/app/src/main/assets/firmware/opensensor1_30_8_b634a9.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/assets/firmware/opensensor1_30_8_b634a9.zip
--------------------------------------------------------------------------------
/app/src/main/assets/firmware/opensensor2_30_24_b634a9.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/assets/firmware/opensensor2_30_24_b634a9.zip
--------------------------------------------------------------------------------
/app/src/main/assets/firmware/sesame6pro_30_21_07ca91.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/assets/firmware/sesame6pro_30_21_07ca91.zip
--------------------------------------------------------------------------------
/app/src/main/assets/firmware/sesamebike1_21_3_d7162a.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/assets/firmware/sesamebike1_21_3_d7162a.zip
--------------------------------------------------------------------------------
/app/src/main/assets/firmware/sesamebike2_30_6_990e7f.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/assets/firmware/sesamebike2_30_6_990e7f.zip
--------------------------------------------------------------------------------
/app/src/main/assets/firmware/sesamebot2_30_17_990e7f.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/assets/firmware/sesamebot2_30_17_990e7f.zip
--------------------------------------------------------------------------------
/app/src/main/assets/firmware/sesameface1_30_19_5c6590.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/assets/firmware/sesameface1_30_19_5c6590.zip
--------------------------------------------------------------------------------
/app/src/main/assets/firmware/bleconnector_30_11_01be3d.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/assets/firmware/bleconnector_30_11_01be3d.zip
--------------------------------------------------------------------------------
/app/src/main/assets/firmware/sesameface1ai_30_23_43ca70.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/assets/firmware/sesameface1ai_30_23_43ca70.zip
--------------------------------------------------------------------------------
/app/src/main/assets/firmware/sesameface1pro_30_18_5c6590.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/assets/firmware/sesameface1pro_30_18_5c6590.zip
--------------------------------------------------------------------------------
/app/src/main/assets/firmware/sesametouch1_30_10_5aac19.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/assets/firmware/sesametouch1_30_10_5aac19.zip
--------------------------------------------------------------------------------
/app/src/main/assets/firmware/sesametouch1pro_30_9_5aac19.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/assets/firmware/sesametouch1pro_30_9_5aac19.zip
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/qrcode_default_scan_line.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/mipmap-xxhdpi/qrcode_default_scan_line.png
--------------------------------------------------------------------------------
/app/src/main/assets/firmware/sesameface1proai_30_22_43ca70.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/assets/firmware/sesameface1proai_30_22_43ca70.zip
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/qrcode_default_grid_scan_line.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CANDY-HOUSE/SesameSDK_Android_with_DemoApp/HEAD/app/src/main/res/mipmap-xxhdpi/qrcode_default_grid_scan_line.png
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/server/dto/CHHistoryUploadRes.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.server.dto
2 |
3 | data class CHHistoryUploadRes(
4 | var r: String?
5 | )
6 | class CHEmpty
7 |
--------------------------------------------------------------------------------
/app/src/main/java/co/utils/alertview/enums/AlertTheme.kt:
--------------------------------------------------------------------------------
1 | package co.utils.alertview.enums
2 |
3 | /**
4 | * Created by hammad.akram on 3/14/18.
5 | */
6 | enum class AlertTheme {
7 | LIGHT,
8 | DARK
9 | }
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/open/device/sesameBiometric/capability/openSensor/CHOpenSensorCapable.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.open.device.sesameBiometric.capability.openSensor
2 |
3 | class CHOpenSensorCapable {
4 | }
--------------------------------------------------------------------------------
/app/src/main/java/co/utils/alertview/enums/AlertStyle.kt:
--------------------------------------------------------------------------------
1 | package co.utils.alertview.enums
2 |
3 | /**
4 | * Created by hammad.akram on 3/14/18.
5 | */
6 | enum class AlertStyle {
7 | BOTTOM_SHEET,
8 | DIALOG,
9 | IOS
10 | }
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/open/device/sesameBiometric/capability/openSensor/CHOpenSensorCapableImpl.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.open.device.sesameBiometric.capability.openSensor
2 |
3 | class CHOpenSensorCapableImpl {
4 | }
--------------------------------------------------------------------------------
/app/src/main/java/co/candyhouse/server/dto/IrDeviceDeleteRequest.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.server.dto
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class IrDeviceDeleteRequest(
6 | @SerializedName("uuid") val uuid: String
7 | )
--------------------------------------------------------------------------------
/app/src/main/res/drawable/search_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/server/dto/CHSS2RegisterRes.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.server.dto
2 |
3 | data class CHSS2RegisterRes(
4 | var sig1: String,
5 | var st: String,
6 | var pubkey: String
7 | )
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/java/co/utils/alertview/enums/AlertActionStyle.kt:
--------------------------------------------------------------------------------
1 | package co.utils.alertview.enums
2 |
3 | /**
4 | * Created by hammad.akram on 3/14/18.
5 | */
6 | enum class AlertActionStyle {
7 | POSITIVE,
8 | NEGATIVE,
9 | DEFAULT
10 | }
--------------------------------------------------------------------------------
/app/src/main/res/drawable/dialog_rounded_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/doc/class/CHBleManager .md:
--------------------------------------------------------------------------------
1 | CHBleManager
2 |
3 | ```
4 | object CHBleManager {
5 | init {}
6 | internal lateinit var appContext: Context
7 |
8 | operator fun invoke(appContext: Context)
9 | }
10 |
11 | ```
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/java/co/utils/materialtextfield/custom/AnimatedRectF.kt:
--------------------------------------------------------------------------------
1 | package co.utils.materialtextfield.custom
2 |
3 | import android.graphics.RectF
4 |
5 | class AnimatedRectF(left: Float, top: Float, right: Float, bottom: Float) : RectF(left, top, right, bottom)
6 |
7 |
8 |
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/server/HttpRespondCode.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.server
2 |
3 | object HttpRespondCode {
4 | const val OK = 200
5 | const val RUN_ERROR = 404
6 | const val DATA_NOT_ALLOWED = 405
7 | const val UNKNOWN = 999
8 | }
--------------------------------------------------------------------------------
/app/src/main/res/drawable/spacer.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Mon Oct 14 18:15:06 CST 2024
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
5 | zipStoreBase=GRADLE_USER_HOME
6 | zipStorePath=wrapper/dists
7 |
--------------------------------------------------------------------------------
/doc/command/configureLockPosition.puml:
--------------------------------------------------------------------------------
1 | @startuml
2 |
3 | APP -> Device: send_command(autolock_second,unlock_angle,lock_angle,command)
4 | Device --> APP: response_command(response,command,status)
5 | Device --> APP: response_command(autolock_second,unlock_angle,lock_angle,command)
6 | @enduml
7 |
--------------------------------------------------------------------------------
/app/src/main/java/co/candyhouse/server/dto/IrDeviceStateRequest.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.server.dto
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class IrDeviceStateRequest(
6 | @SerializedName("uuid") val uuid: String,
7 | @SerializedName("state") val state: String
8 | )
--------------------------------------------------------------------------------
/app/src/main/res/drawable/alert_background_dark.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/alert_background_light.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/doc/class/utils.md:
--------------------------------------------------------------------------------
1 | # co.candyhouse.sesame.utils
2 |
3 |
4 | L:项目debug日志输出
5 |
6 |
7 |
8 | ```svg
9 |
10 | ```
11 |
12 |
13 |
14 |
15 | Ecckey:通过ECDH算法生成共享公钥
16 |
17 |
18 |
19 | ```svg
20 |
21 | ```
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/color/tv_color_red_gray.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/fade_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/fade_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
8 |
--------------------------------------------------------------------------------
/doc/touch/finger_get.puml:
--------------------------------------------------------------------------------
1 | @startuml
2 | APP --> Device: send_command(109)
3 | Device --> APP: response_command(7,109,status)
4 | Device -> APP:推送开始 response_command(8,112,status)
5 | Device -> APP:推送 response_command(8,110,status)
6 | Device -> APP:推送结束 response_command(8,111,status)
7 |
8 |
9 | @enduml
10 |
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/open/CHConfiguration.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.open
2 |
3 | import co.candyhouse.sesame.BuildConfig
4 |
5 | object CHConfiguration {
6 | const val CLIENT_ID: String = BuildConfig.API_GATEWAY_CLIENT_ID
7 | const val API_KEY: String = BuildConfig.API_GATEWAY_API_KEY
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/co/utils/alertview/interfaces/AlertActionListener.kt:
--------------------------------------------------------------------------------
1 | package co.utils.alertview.interfaces
2 |
3 | import co.utils.alertview.objects.AlertAction
4 |
5 | /**
6 | * Created by hammad.akram on 3/14/18.
7 | */
8 |
9 | interface AlertActionListener {
10 | fun onActionClick(action: AlertAction)
11 | }
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_icons_outlined_me_s.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_tick_select.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_wifi_select.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_world_select.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_icons_outlined_contacts_s.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/open/device/CHSesameBike.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.open.device
2 |
3 | import co.candyhouse.sesame.open.CHResult
4 | import co.candyhouse.sesame.server.dto.CHEmpty
5 |
6 | interface CHSesameBike : CHSesameLock {
7 | fun unlock(historytag: ByteArray? = null, result: CHResult)
8 | }
9 |
10 |
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/server/CHIotManagerPublic.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.server
2 |
3 | /**
4 | * 公共访问器类
5 | *
6 | * @author frey on 2025/4/17
7 | */
8 | object CHIotManagerPublic {
9 | /**
10 | * 启动IoT连接
11 | */
12 | fun startConnection() {
13 | CHIotManager.startConnection()
14 | }
15 | }
--------------------------------------------------------------------------------
/app/src/main/java/co/candyhouse/app/base/view/IBaseView.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.app.base.view
2 |
3 | import android.view.View
4 |
5 | /**
6 | * UI基本视图
7 | *
8 | * @author frey on 2025/3/31
9 | */
10 | interface IBaseView {
11 |
12 | fun setupUI()
13 |
14 | fun setupListeners()
15 |
16 | fun observeViewModelData(view: T)
17 | }
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/server/dto/CHSS2RegisterReq.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.server.dto
2 |
3 | internal data class CHSS2RegisterReq(var s1: CHSS2RegisterReqSig1)
4 | internal data class CHSS2RegisterReqSig1(var ak: String, var n: String, var e: String, var t: String)
5 | internal data class CHOS3RegisterReq(var t: String, var pk: String)
6 |
--------------------------------------------------------------------------------
/app/src/main/java/co/candyhouse/app/tabs/devices/hub3/adapter/provider/Ssm2DevicesAdapterProvider.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.app.tabs.devices.hub3.adapter.provider
2 |
3 | /**
4 | *
5 | *
6 | * @author frey on 2025/4/10
7 | */
8 | interface Ssm2DevicesAdapterProvider {
9 | fun getDeviceNameByIdNew(id: String): String?
10 |
11 | fun removeSesame(id: String)
12 | }
--------------------------------------------------------------------------------
/app/src/main/res/anim/dispose_center.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/show_up_center.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/svg_arrow_down.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/show_down_center.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/round_red.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/server/dto/SubscriptionRequest.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.server.dto
2 |
3 | /**
4 | * 订阅主题
5 | *
6 | * @author frey on 2025/5/15
7 | */
8 | data class SubscriptionRequest(
9 | val action: String,
10 | val topicName: String,
11 | val pushToken: String,
12 | val appIdentifyId: String,
13 | val platform: String
14 | )
15 |
--------------------------------------------------------------------------------
/doc/class/CHDeviceLoginStatus_jp.md:
--------------------------------------------------------------------------------
1 | # CHDeviceLoginStatus 列挙型
2 |
3 | `CHDeviceLoginStatus` は、デバイスのログイン状態を表す列挙型です。この列挙型には、2つの列挙定数が含まれています。
4 |
5 | 以下に各列挙定数の意味が示されています:
6 |
7 | | 列挙定数 | 意味 |
8 | | :--------- | :------------- |
9 | | `Login` | デバイスはログイン済みです |
10 | | `UnLogin` | デバイスはログインされていません |
11 |
12 | 通常、この列挙型はデバイスの具体的な状態 (`CHDeviceStatus`) と関連付けられ、特定の状態でのデバイスのログイン状況を示します。
13 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/shake.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/java/co/candyhouse/app/tabs/devices/model/CHLoginViewModel.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.app.tabs.devices.model
2 |
3 | import androidx.lifecycle.ViewModel
4 | import com.amazonaws.mobile.client.UserState
5 | import kotlinx.coroutines.flow.MutableStateFlow
6 |
7 | class CHLoginViewModel : ViewModel() {
8 | val gUserState = MutableStateFlow(UserState.UNKNOWN)
9 | var isJustLogin = false
10 | }
11 |
--------------------------------------------------------------------------------
/doc/bleconnect/login.puml:
--------------------------------------------------------------------------------
1 | @startuml
2 | APP-->Device: connect Ble
3 | APP<--Device: response(14,random_code)
4 |
5 | APP->APP: 使用AesCmac(secretKey本地存储).computeMac(random_code)算法生成->sessionAuth
6 | APP->APP:sessionAuth和random_code作为AESCCM的key、Message创建加密对象->cipher(对Ble数据传输加密解密)
7 |
8 | APP -> Device: send_command(2,sessionAuth))
9 | Device --> APP: response_command(7,2,status,timestamp)
10 |
11 |
12 |
13 | @enduml
14 |
--------------------------------------------------------------------------------
/doc/class/CHSesameOS3Publish_jp.md:
--------------------------------------------------------------------------------
1 | # CHSesameOS3Publish インターフェースのドキュメント
2 | ```svg
3 | interface CHSesameOS3Publish {
4 | fun onGattSesamePublish(receivePayload: SSM3PublishPayload)
5 | }
6 |
7 | ```
8 | `CHSesameOS3Publish` は、インターフェースです。
9 |
10 | ## メソッド
11 |
12 | - `onGattSesamePublish(receivePayload: SSM3PublishPayload)`:このメソッドは実装が必要なメソッドで、`SSM3PublishPayload` 型の引数 `receivePayload` を受け取り、受信したパブリッシュのペイロードを処理します。
13 |
--------------------------------------------------------------------------------
/app/src/main/java/co/candyhouse/app/tabs/devices/hub3/adapter/provider/Hub3IrAdapterProvider.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.app.tabs.devices.hub3.adapter.provider
2 |
3 | import co.candyhouse.app.tabs.devices.hub3.setting.ir.bean.IrRemote
4 |
5 | /**
6 | *
7 | *
8 | * @author frey on 2025/4/10
9 | */
10 | interface Hub3IrAdapterProvider {
11 |
12 | fun performRemote(data: IrRemote)
13 | fun deleteIRDevice(data: IrRemote)
14 | }
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/open/device/sesameBiometric/capability/baseCapbale/CHEventHandler.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.open.device.sesameBiometric.capability.baseCapbale
2 |
3 | import co.candyhouse.sesame.ble.SSM3PublishPayload
4 | import co.candyhouse.sesame.open.device.CHSesameConnector
5 |
6 | interface CHEventHandler {
7 | fun handleEvent(device: CHSesameConnector, payload: SSM3PublishPayload): Boolean
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/co/candyhouse/server/dto/IrDeviceModifyRequest.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.server.dto
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class IrDeviceModifyRequest(
6 | @SerializedName("uuid") val uuid: String,
7 | @SerializedName("alias") val alias: String
8 | ) {
9 | override fun toString(): String {
10 | return "IrDeviceModifyRequest(uuid='$uuid', alias='$alias')"
11 | }
12 | }
--------------------------------------------------------------------------------
/app/src/main/java/co/candyhouse/server/dto/IrMatchCodeRequest.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.server.dto
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class IrMatchCodeRequest(
6 | @SerializedName("irWave") val irWave: String,
7 | @SerializedName("irWaveLength") val irWaveLength: Int,
8 | @SerializedName("type") val type: Int,
9 | @SerializedName("brandName") val brandName: String,
10 | ) {
11 |
12 | }
--------------------------------------------------------------------------------
/app/src/main/res/layout/fg_compose_webview.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/menu_select.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/doc/class/CHSesameOS3Publish.md:
--------------------------------------------------------------------------------
1 | # CHSesameOS3Publish インターフェース
2 |
3 | ```svg
4 | interface CHSesameOS3Publish {
5 | fun onGattSesamePublish(receivePayload: SSM3PublishPayload)
6 | }
7 |
8 | ```
9 |
10 |
11 |
12 | `CHSesameOS3Publish` はインターフェースです。
13 |
14 | ## メソッド
15 |
16 | - `onGattSesamePublish(receivePayload: SSM3PublishPayload)`:このメソッドは実装する必要があります。`SSM3PublishPayload`型の引数`receivePayload`を受取り、受信したPublishPayloadを処理します。
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/elastic_center.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/overshoot_center.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_arrow.xml:
--------------------------------------------------------------------------------
1 |
6 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_arrow_gray.xml:
--------------------------------------------------------------------------------
1 |
6 |
11 |
12 |
--------------------------------------------------------------------------------
/doc/class/CHSesameBike2.md:
--------------------------------------------------------------------------------
1 |
2 | # CHSesameBike2 インターフェイス
3 | ```svg
4 |
5 | interface CHSesameBike2 : CHSesameLock {
6 |
7 | fun unlock(tag: ByteArray? = null, result: CHResult)
8 | }
9 |
10 | ```
11 | `CHSesameBike2` は`CHSesameLock` インターフェースを継承したデバイスインターフェースで、Sesame Bike2 ロックのデバイスの管理と操作を行います。
12 |
13 | ## メソッド
14 |
15 | - `fun unlock(tag: ByteArray? = null, result: CHResult)` - デバイスのロックを解除します。操作が成功した場合は操作結果を返し、それ以外の場合はエラーメッセージを返します。
16 |
17 |
--------------------------------------------------------------------------------
/doc/class/CHSesameBike2_jp.md:
--------------------------------------------------------------------------------
1 | # CHSesameBike2 インターフェースのドキュメント
2 | ```svg
3 |
4 | interface CHSesameBike2 : CHSesameLock {
5 |
6 | fun unlock(tag: ByteArray? = null, result: CHResult)
7 | }
8 |
9 | ```
10 | `CHSesameBike2` は、デバイス接口であり、`CHSesameLock` インターフェースを継承しています。Sesame Bike2 ロックデバイスの管理と操作を担当します。
11 |
12 | ## メソッド
13 |
14 | - `fun unlock(tag: ByteArray? = null, result: CHResult)` - デバイスをアンロックします。操作が成功した場合、操作結果を返します。それ以外の場合はエラーメッセージを返します。
15 |
--------------------------------------------------------------------------------
/doc/class/CHSesameBike_jp.md:
--------------------------------------------------------------------------------
1 | # CHSesameBike インターフェースのドキュメント
2 | ```svg
3 |
4 |
5 | interface CHSesameBike : CHSesameLock {
6 | fun unlock(historytag: ByteArray? = null, result: CHResult)
7 | }
8 | ```
9 | `CHSesameBike` は、デバイス接口であり、`CHSesameLock` インターフェースを継承しています。Sesame Bike ロックデバイスの管理と操作を担当します。
10 |
11 | ## メソッド
12 |
13 | - `fun unlock(historytag: ByteArray? = null, result: CHResult)` - デバイスをアンロックします。操作が成功した場合、操作結果を返します。それ以外の場合はエラーメッセージを返します。
14 |
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/open/device/sesameBiometric/capability/connect/CHDeviceConnectDelegate.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.open.device.sesameBiometric.capability.connect
2 |
3 | import co.candyhouse.sesame.open.device.CHSesameConnector
4 |
5 | interface CHDeviceConnectDelegate {
6 | fun onSSM2KeysChanged(device: CHSesameConnector, ssm2keys: Map)
7 | fun onRadarReceive(device: CHSesameConnector, payload: ByteArray){}
8 | }
--------------------------------------------------------------------------------
/app/src/main/res/drawable/svg_bot2_view.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/doc/class/CHSesameBike.md:
--------------------------------------------------------------------------------
1 |
2 | # CHSesameBike インターフェイス
3 | ```svg
4 |
5 |
6 | interface CHSesameBike : CHSesameLock {
7 | fun unlock(historytag: ByteArray? = null, result: CHResult)
8 | }
9 | ```
10 | `CHSesameBike` は `CHSesameLock` インターフェースを継承したデバイスインターフェースで、Sesame Bike ロックのデバイスの管理と操作を行います。
11 |
12 | ## メソッド
13 |
14 | - `fun unlock(historytag: ByteArray? = null, result: CHResult)` - デバイスのロックを解除します。操作が成功した場合は操作結果を返し、それ以外の場合はエラーメッセージを返します。
15 |
16 |
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/open/device/sesameBiometric/capability/baseCapbale/CHBaseCapability.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.open.device.sesameBiometric.capability.baseCapbale
2 |
3 | /**
4 | * 基础能力接口
5 | * 定义所有能力共有的方法
6 | */
7 | interface CHBaseCapability {
8 | /**
9 | * 初始化能力
10 | */
11 | fun initialize(support: CHCapabilitySupport)
12 |
13 | /**
14 | * 检查是否已初始化
15 | */
16 | fun isInitialized(): Boolean
17 | }
--------------------------------------------------------------------------------
/doc/class/CHDeviceLoginStatus.md:
--------------------------------------------------------------------------------
1 | # CHDeviceLoginStatus 列挙型クラス
2 | ```svg
3 |
4 | enum class CHDeviceLoginStatus {
5 | Login, UnLogin,
6 | }
7 | ```
8 |
9 |
10 |
11 | `CHDeviceLoginStatus` は、デバイスのログイン状態を表す列挙型クラスです。この列挙型には、2つの列挙定数が含まれています。
12 |
13 | 以下は2つの列挙定数の意味です。
14 |
15 | | 列挙定数 | 意味 |
16 | | :----- | :----- |
17 | | `Login` | デバイスはログインしている。 |
18 | | `UnLogin` | デバイスはログインしていない。 |
19 |
20 | この列挙型クラスは通常、デバイスの具体的な状態(`CHDeviceStatus`)と関連しており、デバイスが特定の状態でのログイン状況を表します。
21 |
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/open/device/sesameBiometric/capability/baseCapbale/CHEventCapability.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.open.device.sesameBiometric.capability.baseCapbale
2 |
3 | /**
4 | * 事件处理能力接口
5 | * 提供事件代理管理功能
6 | */
7 | interface CHEventCapability {
8 | /**
9 | * 注册事件代理
10 | */
11 | fun registerEventDelegate(delegate: T)
12 |
13 | /**
14 | * 取消注册事件代理
15 | */
16 | fun unregisterEventDelegate(delegate: T)
17 | }
--------------------------------------------------------------------------------
/doc/class/NSError.md:
--------------------------------------------------------------------------------
1 |
2 | # NSError クラス
3 | ```svg
4 | class NSError(message: String, var domain: String, var code: Int) : Error(message)
5 |
6 | ```
7 | `NSError`クラスは`Error`クラスを継承し、特定のドメインを持つエラーコードを表します。
8 |
9 | ## コンストラクタのパラメータ
10 |
11 | - `message`:エラーメッセージを表し、`Error`クラスを継承します。
12 | - `domain`:エラーが発生したドメインを表し、`String`型のの変数です。
13 | - `code`:特定のエラーコードを表し、`Int`型の変数です。
14 |
15 | 例外やエラーの処理において、`NSError`のインスタンスを作成し、具体的なエラーメッセージ、ドメイン、およびエラーコードを提供することができます。エラーをより正確に特定し、処理することに役立ちます。
16 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_cloud.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/install_start.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | PACKAGE=co.candyhouse.sesame2
4 | ACTIVITY=co.candyhouse.app.tabs.MainActivity
5 | APK_LOCATION=app-release.apk
6 | # echo "Package: $PACKAGE"
7 |
8 | # echo "Building the project with tasks: $TASKS"
9 | # ./gradlew $TASKS
10 |
11 | # echo "Uninstalling $PACKAGE"
12 | # adb uninstall $PACKAGE
13 |
14 | echo "Installing $APK_LOCATION"
15 | adb install $APK_LOCATION
16 |
17 | echo "Starting $ACTIVITY"
18 | adb shell am start -n $PACKAGE/$ACTIVITY
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/java/co/candyhouse/server/dto/IrRemoteInfoRespond.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.server.dto
2 |
3 | import co.candyhouse.app.tabs.devices.hub3.setting.ir.bean.IrRemote
4 | import com.google.gson.annotations.SerializedName
5 | import java.io.Serializable
6 |
7 | class IrRemoteInfoRespond (@SerializedName("type") val type: Int,
8 | @SerializedName("count") val count: Int,
9 | @SerializedName("data") val data: List): Serializable {
10 |
11 | }
--------------------------------------------------------------------------------
/app/src/main/res/animator/cloud_dowload.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/layout_custom_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/doc/class/NSError_jp.md:
--------------------------------------------------------------------------------
1 | # NSError クラスのドキュメント
2 | ```svg
3 | class NSError(message: String, var domain: String, var code: Int) : Error(message)
4 |
5 | ```
6 | `NSError` クラスは、特定のドメインとエラーコードを持つエラーを表すためのクラスで、`Error` クラスを継承しています。
7 |
8 | ## コンストラクタの引数
9 |
10 | - `message`:エラーメッセージです。`Error` クラスから継承されたプロパティです。
11 | - `domain`:エラーが発生したドメインを示す、文字列(String)型の変数です。
12 | - `code`:特定のエラーコードを示す、整数(Int)型の変数です。
13 |
14 | 例外やエラーの処理時に、`NSError` クラスのインスタンスを作成し、具体的なエラーメッセージ、ドメイン、およびエラーコードを提供することで、エラーをより正確に識別して処理することができます。
15 |
--------------------------------------------------------------------------------
/doc/class/CHWifiModule2MechSettings.md:
--------------------------------------------------------------------------------
1 |
2 | # CHWifiModule2MechSettings クラス
3 | ```svg
4 | class CHWifiModule2MechSettings(var wifiSSID: String?, var wifiPassWord: String?)
5 |
6 | ```
7 | `CHWifiModule2MechSettings`クラスは、Wifiモジュール2の機械設定を処理および管理します。
8 |
9 | ## プロパティ
10 |
11 | - `wifiSSID`:WifiのSSIDで、String型です。
12 | - `wifiPassWord`:Wifiのパスワードで、String型です。
13 |
14 | ## コンストラクタ
15 |
16 | - `CHWifiModule2MechSettings(wifiSSID: String?, wifiPassWord: String?)`:コンストラクタは2つの引数、SSIDとパスワードを受取ります。これらの引数は関連するプロパティを初期化します。
17 |
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/open/device/sesameBiometric/capability/remoteNano/CHRemoteNanoDelegate.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.open.device.sesameBiometric.capability.remoteNano
2 |
3 | import co.candyhouse.sesame.ble.os3.CHRemoteNanoTriggerSettings
4 | import co.candyhouse.sesame.open.device.CHSesameConnector
5 |
6 | interface CHRemoteNanoDelegate {
7 | fun onTriggerDelaySecondReceived(
8 | device: CHSesameConnector,
9 | setting: CHRemoteNanoTriggerSettings
10 | )
11 | }
--------------------------------------------------------------------------------
/doc/command/sesame_open_sensor_jp.md:
--------------------------------------------------------------------------------
1 | # open sensor 解説
2 | ## 実装クラス CHSesameTouchProDevice
3 | ### インターフェース
4 |
5 |
6 | ```agsl
7 |
8 |
9 |
10 | fun insertSesame(sesame: CHDevices, result: CHResult)
11 | fun removeSesame(tag: String, result: CHResult)
12 | ```
13 | ### インターフェースの機能説明
14 |
15 |
16 |
17 | #### [insertSesame](../touch/add_sesame_jp.md):Sesameを追加します
18 | #### [removeSesame](../touch/remove_sesame_jp.md):Sesameを削除します
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/modal_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
14 |
15 |
--------------------------------------------------------------------------------
/doc/command/sesame_open_sensor.md:
--------------------------------------------------------------------------------
1 | # open sensor 説明
2 | ## 実装クラス CHSesameTouchProDevice
3 | ### インターフェイス
4 |
5 | ```agsl
6 |
7 |
8 |
9 |
10 | fun insertSesame(sesame: CHDevices, result: CHResult)
11 | fun removeSesame(tag: String, result: CHResult)
12 | ```
13 | ### インターフェースの機能の定義
14 |
15 |
16 |
17 |
18 |
19 |
20 | #### [insertSesame](../touch/add_sesame.md):sesameを取得します
21 | #### [removeSesame](../touch/remove_sesame.md):sesameを削除します
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/doc/command/sesamebike2fun.md:
--------------------------------------------------------------------------------
1 | # Bike2 説明
2 | ## 実装クラス CHSesameBike2Device
3 | ### インターフェース
4 |
5 | ```agsl
6 | fun unlock(tag: ByteArray? = null, result: CHResult)
7 | fun reset(result: CHResult)
8 | fun getVersionTag(result: CHResult)
9 |
10 | ```
11 | ### インターフェースの機能の定義
12 | - [unlock](unlock.md):ロックを解除する
13 | - [reset](reset.md):デバイスをリセットする
14 | - [getVersionTag](ssm5version.md):バージョンのタグを取得する
15 | ### フローチャート
16 | 
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/java/co/candyhouse/app/App.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.app
2 |
3 | import android.content.Context
4 | import co.candyhouse.app.base.BaseApp
5 | import co.candyhouse.sesame.open.CHDeviceManager
6 |
7 | class CandyHouseApp : BaseApp() {
8 |
9 | override fun onCreate() {
10 | super.onCreate()
11 | CHDeviceManager.app = this
12 |
13 | // 启动IoT连接
14 | initIoTConnection()
15 | }
16 | }
17 |
18 | val Context.candyHouseApplication: CandyHouseApp
19 | get() = applicationContext as CandyHouseApp
20 |
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/open/device/sesameBiometric/capability/baseCapbale/CHCapabilitySupport.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.open.device.sesameBiometric.capability.baseCapbale
2 |
3 | import co.candyhouse.sesame.ble.SSM3ResponsePayload
4 | import co.candyhouse.sesame.ble.os3.base.SesameOS3Payload
5 | import co.candyhouse.sesame.open.CHResult
6 |
7 | interface CHCapabilitySupport {
8 | fun sendCommand(payload: SesameOS3Payload, callback: (SSM3ResponsePayload) -> Unit)
9 | fun isBleAvailable(result: CHResult): Boolean
10 | }
--------------------------------------------------------------------------------
/app/src/main/java/cn/bingoogolapple/qrcode/core/BGScanResult.java:
--------------------------------------------------------------------------------
1 | package cn.bingoogolapple.qrcode.core;
2 |
3 | import android.graphics.PointF;
4 |
5 | /**
6 | * 作者:王浩
7 | * 创建时间:2018/6/15
8 | * 描述:
9 | */
10 | public class BGScanResult {
11 | String result;
12 | PointF[] resultPoints;
13 |
14 | public BGScanResult(String result) {
15 | this.result = result;
16 | }
17 |
18 | public BGScanResult(String result, PointF[] resultPoints) {
19 | this.result = result;
20 | this.resultPoints = resultPoints;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/doc/class/SesameBleReceiver.md:
--------------------------------------------------------------------------------
1 | # SesameBleReceiver クラス
2 |
3 | ```svg
4 |
5 |
6 | internal class SesameBleReceiver {
7 | var buffer = byteArrayOf()
8 | internal fun feed(input: ByteArray): Pair?
9 |
10 | }
11 | ```
12 |
13 |
14 |
15 | `SesameBleReceiver` は内部のクラスです。
16 |
17 | ## プロパティ
18 |
19 | - `buffer`:受信したBluetoothデータを保存するために使用されるバイト配列です。
20 |
21 | ## メソッド
22 |
23 | - `feed(input: ByteArray): Pair?`:このメソッドは、バイト配列を受取り、`DeviceSegmentType`とバイト配列を含むペアの二重のタプルを返します。処理が失敗した場合は、nullを返します。
24 |
--------------------------------------------------------------------------------
/doc/command/sesamebike2fun_jp.md:
--------------------------------------------------------------------------------
1 | # Bike2 解説
2 |
3 | ## 実装クラス: CHSesameBike2Device
4 |
5 | ### インターフェース
6 |
7 | ```agsl
8 | fun unlock(tag: ByteArray? = null, result: CHResult)
9 | fun reset(result: CHResult)
10 | fun getVersionTag(result: CHResult)
11 |
12 | ```
13 | ### インターフェースの機能説明
14 |
15 | - [unlock](unlock_jp.md):ロックを解除する
16 | - [reset](reset_jp.md):デバイスをリセットする
17 | - [getVersionTag](ssm5version_jp.md):バージョンタグを取得する
18 | ### フローチャート
19 |
20 | 
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/svg_restart.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/navigation/nav_graph.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/doc/class/CHWifiModule2MechSettings_jp.md:
--------------------------------------------------------------------------------
1 | # CHWifiModule2MechSettings クラスのドキュメント
2 |
3 | ```svg
4 | class CHWifiModule2MechSettings(var wifiSSID: String?, var wifiPassWord: String?)
5 |
6 | ```
7 |
8 | `CHWifiModule2MechSettings` クラスは、Wifi モジュール 2 の機械設定を処理および管理するためのクラスです。
9 |
10 | ## 属性
11 |
12 | - `wifiSSID`:Wifi のSSID(Service Set Identifier)です。文字列(String)型です。
13 | - `wifiPassWord`:Wifi のパスワードです。文字列(String)型です。
14 |
15 | ## コンストラクタ
16 |
17 | - `CHWifiModule2MechSettings(wifiSSID: String?, wifiPassWord: String?)`:コンストラクタは、Wifi のSSID とパスワードの2つの引数を受け取ります。これにより、対応する属性が初期化されます。
18 |
--------------------------------------------------------------------------------
/doc/bleconnect/data_send.puml:
--------------------------------------------------------------------------------
1 | @startuml
2 | APP --> sendCommand :command
3 | sendCommand : Preparing to send data
4 |
5 | sendCommand --> SesameBleTransmit :(payload,isEncryt,onResponse)
6 | SesameBleTransmit -->getChunk :intput(byte[])
7 |
8 | state getChunk{
9 | input.size --> part1 :gt19
10 | part1 --> part2
11 |
12 | part2 -->partN
13 | input.size --> fullData:le19 or eq19
14 | fullData:complete data
15 | }
16 | writeCharacteristic:Ble devices
17 | part1 --> writeCharacteristic
18 | part2 --> writeCharacteristic
19 | partN --> writeCharacteristic
20 | fullData --> writeCharacteristic
21 |
22 | @enduml
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/open/device/sesameBiometric/capability/connect/CHDeviceConnectCapable.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.open.device.sesameBiometric.capability.connect
2 |
3 | import co.candyhouse.sesame.open.CHResult
4 | import co.candyhouse.sesame.open.device.CHDevices
5 | import co.candyhouse.sesame.server.dto.CHEmpty
6 |
7 | interface CHDeviceConnectCapable {
8 | fun insertSesame(sesame: CHDevices, result: CHResult)
9 | fun removeSesame(tag: String, result: CHResult)
10 | fun setRadarSensitivity(payload: ByteArray, result: CHResult){}
11 | }
--------------------------------------------------------------------------------
/doc/class/SesameOS3Payload.md:
--------------------------------------------------------------------------------
1 |
2 | # SesameOS3Payload データのクラス
3 | ```svg
4 | internal data class SesameOS3Payload(val itemCode: UByte, val data: ByteArray) {
5 | fun toDataWithHeader(): ByteArray {
6 | return byteArrayOf(itemCode.toByte()) + data
7 | }
8 | }
9 |
10 |
11 | ```
12 | `SesameOS3Payload`データのクラスは、Sesame OS3 のペイロードデータを処理および管理します。
13 |
14 | ## プロパティ
15 |
16 | - `itemCode`:UByte型です。
17 | - `data`:有効なペイロードデータを保存するByteArray型です。
18 |
19 | ## メソッド
20 |
21 | - `toDataWithHeader()`:このメソッドは、`itemCode` を Byte 型に変換し、それをヘッダーとして `data` と連結して新しいバイト配列を生成します。このメソッドは、有効なペイロードデータを送信または保存する際に、適切な形式に変換します。
--------------------------------------------------------------------------------
/doc/sesame_code_ja.md:
--------------------------------------------------------------------------------
1 | SesameOs3 その他の関連コンテンツの共有
2 | ===========
3 |
4 |
5 | 1. [ファームウェアアップデート](bleprotocol/firmwareUpgradation_ja.md)
6 | 2. [Bluetooth 接続](bleprotocol/BleConnect_ja.md)
7 | 3. [NFC 接続](bleprotocol/nfcconnect_ja.md)
8 | 3. [Bluetooth 暗号化アルゴリズム](./encryption/ble_encryption_jp.md)
9 | 3. [Bluetooth 登録](bleconnect/register_jp.md)
10 | 3. [Bluetooth ログイン](bleconnect/login_jp.md)
11 | 3. [Bluetooth ランダムコード取得](bleconnect/randomcode_jp.md)
12 | 3. [Bluetooth データ送信](bleconnect/ble_receivedata_jp.md)
13 | 3. [Bluetooth データ受信](bleconnect/ble_senddata_jp.md)
14 | 3. [タイムスタンプの更新](bleconnect/timestamp_jp.md)
15 |
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/server/dto/AuthenticationDataWrapper.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.server.dto
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class AuthenticationDataWrapper(
6 | @SerializedName("op") var operation: String,
7 | @SerializedName("deviceID") val deviceID: String,
8 | @SerializedName("items") val credentialList: List
9 | ) {
10 | override fun toString(): String {
11 | return "AuthenticationDataWrapper(operation='$operation', deviceID='$deviceID', credentialList=$credentialList)"
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/progress_red.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 | -
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_eye_on.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_icons_outlined_me_y.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/progress_blue.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 | -
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_search.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/doc/sesame_code.md:
--------------------------------------------------------------------------------
1 | SesameOs3 その他の関連コンテンツの共有
2 | ===========
3 |
4 |
5 | 1. [ファームウェアのアップグレード](bleprotocol/firmwareUpgradation.md)
6 | 2. [Bluetooth 接続](bleprotocol/BleConnect.md)
7 | 3. [NFC 接続](bleprotocol/nfcconnect.md)
8 | 3. [Ble 暗号化アルゴリズム](./encryption/ble_encryption.md)
9 | 3. [Ble 登録](bleconnect/register.md)
10 | 3. [Ble ログイン](bleconnect/login.md)
11 | 3. [Ble ランダムコードの取得](bleconnect/randomcode.md)
12 | 3. [Ble データの受信](bleconnect/ble_receivedata.md)
13 | 3. [Ble データの送信](bleconnect/ble_senddata.md)
14 | 3. [タイムスタンプの更新](bleconnect/timestamp.md)
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_icons_filled_close.xml:
--------------------------------------------------------------------------------
1 |
6 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/java/co/candyhouse/server/dto/IrDeviceRemoteKeyRequest.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.server.dto
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class IrDeviceRemoteKeyRequest(
6 | @SerializedName("operation") val operation: String = "emit",
7 | @SerializedName("data") val data: String?,
8 | @SerializedName("irDeviceUUID") val irDeviceUUID: String? = "",
9 | @SerializedName("irType") val irType: Int = 0,
10 | ){
11 | override fun toString(): String {
12 | return "IrDeviceRemoteKeyRequest(operation='$operation', data=$data, irDeviceUUID=$irDeviceUUID, irType=$irType)"
13 | }
14 | }
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_icons_filled_close_white.xml:
--------------------------------------------------------------------------------
1 |
6 |
12 |
13 |
--------------------------------------------------------------------------------
/doc/class/SesameOS3Payload_jp.md:
--------------------------------------------------------------------------------
1 | # SesameOS3Payload クラスのドキュメント
2 | ```svg
3 | internal data class SesameOS3Payload(val itemCode: UByte, val data: ByteArray) {
4 | fun toDataWithHeader(): ByteArray {
5 | return byteArrayOf(itemCode.toByte()) + data
6 | }
7 | }
8 |
9 |
10 | ```
11 | `SesameOS3Payload` クラスは、Sesame OS3 のペイロードデータを処理および管理するためのデータクラスです。
12 |
13 | ## プロパティ
14 |
15 | - `itemCode`:項目コードを表す UByte 型のプロパティです。
16 | - `data`:有効なペイロードデータを格納するバイト配列(ByteArray)です。
17 |
18 | ## メソッド
19 |
20 | - `toDataWithHeader()`:このメソッドは、`itemCode` を Byte 型に変換し、それをヘッダーとして `data` と連結した新しいバイト配列を返します。このメソッドは、ペイロードデータを適切な形式に変換して送信または保存する際に使用されます。
21 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_icon_delete.xml:
--------------------------------------------------------------------------------
1 |
6 |
11 |
16 |
17 |
--------------------------------------------------------------------------------
/doc/bleconnect/register.puml:
--------------------------------------------------------------------------------
1 | @startuml
2 | APP-->Device: connect Ble
3 | APP<--Device: response(14,random_code)
4 |
5 | APP->APP: 使用ECDH算法EccKey.getPubK()生成公钥、密钥\n(app_pub_key,app_pri_key)
6 |
7 | APP -> Device: send_command(1,app_pub_key,timestamp))
8 | Device --> APP: response_command(response,command,status,device_pub_key)
9 |
10 | APP->APP:使用ECDH算法EccKey.ecdh(device_pub_key)生成共享公钥->ecdhSecret(供AESCMAC使用)
11 | APP->APP:ecdhSecret 和random_code 作为AESCMAC算法的key、Message生成消息码。AesCmac(ecdhSecret,16).computeMac(random_code)->sessionAuth(供AESCCM使用)
12 | APP->APP:deviceSecret和random_code作为AESCCM的key、Message创建加密对象->cipher(对Ble数据传输加密解密)
13 |
14 |
15 | @enduml
16 |
--------------------------------------------------------------------------------
/doc/encryption/ble_encryption.puml:
--------------------------------------------------------------------------------
1 | @startuml
2 | APP-->Device: connect Ble
3 | APP<--Device: response(14,random_code)
4 |
5 | APP->APP: 使用ECDH算法EccKey.getPubK()生成公钥、密钥\n(app_pub_key,app_pri_key)
6 |
7 | APP -> Device: send_command(1,app_pub_key,timestamp))
8 | Device --> APP: response_command(response,command,status,device_pub_key)
9 |
10 | APP->APP:使用ECDH算法EccKey.ecdh(device_pub_key)生成共享公钥->ecdhSecret(供AESCMAC使用)
11 | APP->APP:ecdhSecret 和random_code 作为AESCMAC算法的key、Message生成消息码。AesCmac(ecdhSecret,16).computeMac(random_code)->sessionAuth(供AESCCM使用)
12 | APP->APP:deviceSecret和random_code作为AESCCM的key、Message创建加密对象->cipher(对Ble数据传输加密解密)
13 |
14 |
15 | @enduml
16 |
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/open/device/sesameBiometric/capability/remoteNano/CHRemoteNanoCapable.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.open.device.sesameBiometric.capability.remoteNano
2 |
3 | import co.candyhouse.sesame.open.CHResult
4 | import co.candyhouse.sesame.open.device.sesameBiometric.devices.CHSesameBiometricBase
5 | import co.candyhouse.sesame.server.dto.CHEmpty
6 |
7 | interface CHRemoteNanoCapable {
8 | fun setTriggerDelayTime(time: UByte, result: CHResult)
9 |
10 | fun registerEventDelegate(device: CHSesameBiometricBase, delegate: CHRemoteNanoDelegate)
11 | fun unregisterEventDelegate(delegate: CHRemoteNanoDelegate)
12 | }
--------------------------------------------------------------------------------
/app/src/main/res/drawable/arrow.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
16 |
17 |
--------------------------------------------------------------------------------
/doc/class/CHSesameSensorDelegate.md:
--------------------------------------------------------------------------------
1 |
2 | # CHSesameSensorDelegate インターフェース
3 | ```svg
4 | interface CHSesameSensorDelegate : CHDeviceStatusDelegate {
5 | fun onSSM2KeysChanged(device: CHSesameConnector, ssm2keys: Map) {}
6 | }
7 |
8 | ```
9 | `CHSesameSensorDelegate`インターフェースは、Sesameデバイスのセンサー関連イベントを処理および管理します。
10 |
11 | ## メソッド
12 |
13 | - `onSSM2KeysChanged(device: CHSesameConnector, ssm2keys: Map)`:SSM2キーが変更された際に呼び出されます。このメソッドは2つのパラメータを受け取ります。1つ目のパラメータはキーの変更が発生したデバイスであり、2つ目のパラメータは新しいSSM2のキーセットです。デフォルト値は null です。
14 |
15 | ## 継承
16 |
17 | - `CHDeviceStatusDelegate`:`CHSesameSensorDelegate`インターフェースは`CHDeviceStatusDelegate`を継承し、親クラスの全てのメソッドを実装します。
18 |
--------------------------------------------------------------------------------
/doc/bleconnect/data_receive.puml:
--------------------------------------------------------------------------------
1 | @startuml
2 | BleDevice --> gattRxBuffer :response
3 | BleDevice --> gattRxBuffer :response
4 | BleDevice --> gattRxBuffer :response
5 | state gattRxBuffer{
6 | parsingType --> gt0
7 | parsingType --> 0
8 | 0-->waite
9 | waite:next read response
10 | waite ->finish
11 | finish:receive finish
12 | }
13 | gt0 --> parseNotifyPayload
14 | finish --> parseNotifyPayload
15 | parseNotifyPayload:data Decrypted
16 | parseNotifyPayload-->onGattSesameResponse
17 | onGattSesameResponse : SSM2OpCode.response
18 | parseNotifyPayload-->onGattSesamePublish
19 | onGattSesamePublish:SSM2OpCode.publish
20 | onGattSesameResponse -->cmdCallBack
21 | onGattSesamePublish -->login
22 |
23 |
24 | @enduml
--------------------------------------------------------------------------------
/app/src/main/res/layout/dialog_wheel_picker.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/doc/class/CHDeviceStatusDelegate_jp.md:
--------------------------------------------------------------------------------
1 | # CHDeviceStatusDelegate インターフェースのドキュメント
2 | ```svg
3 | interface CHDeviceStatusDelegate {
4 |
5 | fun onBleDeviceStatusChanged(device: CHDevices, status: CHDeviceStatus, shadowStatus: CHDeviceStatus?) {}
6 |
7 | fun onMechStatus(device: CHDevices) {}
8 | }
9 |
10 | ```
11 |
12 | `CHDeviceStatusDelegate` は、デバイスの状態変更を監視し、それに応答するためのデバイス状態代理インターフェースです。
13 |
14 | ## メソッド
15 |
16 | - `fun onBleDeviceStatusChanged(device: CHDevices, status: CHDeviceStatus, shadowStatus: CHDeviceStatus?) {}` - BLEデバイスの状態が変更された際に呼び出されます。デバイスオブジェクト、新しいデバイスの状態、およびデバイスのシャドウ状態(存在する場合)が引数として渡されます。
17 | - `fun onMechStatus(device: CHDevices) {}` - デバイスのメカニカル状態が変更された際に呼び出されます。デバイスオブジェクトが引数として渡されます。
18 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_tick_blue.xml:
--------------------------------------------------------------------------------
1 |
6 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_tick_grey.xml:
--------------------------------------------------------------------------------
1 |
6 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/bottom_nav.xml:
--------------------------------------------------------------------------------
1 |
2 |
23 |
--------------------------------------------------------------------------------
/doc/class/SesameBleTransmit.md:
--------------------------------------------------------------------------------
1 | # SesameBleTransmit クラス
2 |
3 | ```svg
4 |
5 | internal class SesameBleTransmit(var type: DeviceSegmentType, var input: ByteArray) {
6 | var isStart = 1
7 | internal fun getChunk(): ByteArray?
8 | }
9 |
10 | ```
11 |
12 | `SesameBleTransmit` は内部のクラスです。
13 |
14 | ## プロパティ
15 |
16 | - `type`:`DeviceSegmentType`の列挙型の値です。転送するデータのタイプを表します。
17 | - `input`:バイト配列です。転送する必要があるデータを表します。
18 | - `isStart`:データ転送の開始を示すために使用される整数値です。初期値は1であり、転送が開始されると0に設定され、転送が終了すると-1に設定されます。
19 |
20 | ## メソッド
21 |
22 | - `getChunk(): ByteArray?`:バイト配列を返し、データブロックを表します。`isStart`が-1の場合、データの転送が完了したことを示し、`null`を返します。また、`input`が19以下の場合、すべてのデータを一度に転送し、`isStart`を-1に設定します。`input`が19より大きい場合、19バイトずつデータを転送し、すべてのデータが転送されるまで繰り返します。
23 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_btn_confirm.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | -
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_btn_warning.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | -
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/doc/class/CHDeviceStatusDelegate.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | # CHDeviceStatusDelegate インターフェース
4 | ```svg
5 | interface CHDeviceStatusDelegate {
6 |
7 | fun onBleDeviceStatusChanged(device: CHDevices, status: CHDeviceStatus, shadowStatus: CHDeviceStatus?) {}
8 |
9 | fun onMechStatus(device: CHDevices) {}
10 | }
11 |
12 | ```
13 |
14 | `CHDeviceStatusDelegate` はデバイス状態の変化を監視と応答するためのデバイス状態の代理のインターフェースです。
15 |
16 | ## メソッド
17 |
18 | - `fun onBleDeviceStatusChanged(device: CHDevices, status: CHDeviceStatus, shadowStatus: CHDeviceStatus?) {}` - BLEデバイスの状態が変化した時に呼び出され、デバイスオブジェクト、新しいデバイスの状態、およびデバイスのシャドウ状態(存在する場合)というパラメータがインプットされます。
19 | - `fun onMechStatus(device: CHDevices) {}` - デバイスの機械状態が変化した時に呼び出され、デバイスオブジェクトというパラメータがインプットされます。
20 |
21 |
22 |
--------------------------------------------------------------------------------
/doc/class/CHSesameSensorDelegate_jp.md:
--------------------------------------------------------------------------------
1 | # CHSesameSensorDelegate インターフェースのドキュメント
2 | ```svg
3 | interface CHSesameSensorDelegate : CHDeviceStatusDelegate {
4 | fun onSSM2KeysChanged(device: CHSesameConnector, ssm2keys: Map) {}
5 | }
6 |
7 | ```
8 |
9 | `CHSesameSensorDelegate` インターフェースは、Sesame デバイスのセンサー関連イベントを処理および管理するために使用されます。
10 |
11 | ## メソッド
12 |
13 | - `onSSM2KeysChanged(device: CHSesameConnector, ssm2keys: Map)`:このメソッドは、SSM2 キーが変更された際に呼び出されます。このメソッドは 2 つのパラメータを受け取ります。第 1 パラメータはキーが変更されたデバイス、第 2 パラメータは新しい SSM2 キーのマップです。デフォルトの実装では何も行いません。
14 |
15 | ## 継承
16 |
17 | - `CHDeviceStatusDelegate`:`CHSesameSensorDelegate` インターフェースは、`CHDeviceStatusDelegate` インターフェースを継承しており、親クラスのすべてのメソッドを実装する必要があります。
18 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_ap_alert.xml:
--------------------------------------------------------------------------------
1 |
6 |
11 |
12 |
--------------------------------------------------------------------------------
/doc/command/magnet_jp.md:
--------------------------------------------------------------------------------
1 | # Magnet 角度補正
2 |
3 | ### 送信フォーマット
4 | | バイト | 0 |
5 | |:----:|:----:|
6 | | データ | コマンド |
7 | - コマンド: 指令17(固定)
8 |
9 | ### 受信フォーマット
10 | | バイト | 2 | 1 | 0 |
11 | |:----:|:----:|:----:|:----:|
12 | | データ | ステータス | コマンド | レスポンス |
13 | - コマンド: 指令17(固定)
14 | - レスポンス: 応答0x07(固定)
15 | - ステータス: 状態0x00(成功)
16 | ### シーケンス図
17 | 
18 |
19 | ### Androidの例
20 | ``` java
21 | override fun magnet(result: CHResult) {
22 | if (checkBle(result)) return
23 | sendCommand(SesameOS3Payload(SesameItemCode.magnet.value, byteArrayOf()), DeviceSegmentType.cipher) { res ->
24 | result.invoke(Result.success(CHResultState.CHResultStateBLE(CHEmpty())))
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/open/device/sesameBiometric/capability/card/CHCardDelegate.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.open.device.sesameBiometric.capability.card
2 |
3 | import co.candyhouse.sesame.open.device.CHSesameConnector
4 |
5 | interface CHCardDelegate {
6 | fun onCardReceive(device: CHSesameConnector, cardID: String, hexName: String, type: Byte) {}
7 | fun onCardChanged(device: CHSesameConnector, cardID: String, hexName: String, type: Byte) {}
8 | fun onCardReceiveEnd(device: CHSesameConnector) {}
9 | fun onCardReceiveStart(device: CHSesameConnector) {}
10 | fun onCardModeChanged(device: CHSesameConnector, mode: Byte) {}
11 | fun onCardDelete(device: CHSesameConnector, cardID: String) {}
12 | }
--------------------------------------------------------------------------------
/app/src/main/res/drawable/round_blue_no.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 | -
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/utils/aescmac/MAC.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.utils.aescmac
2 |
3 | import java.security.GeneralSecurityException
4 |
5 | interface Mac {
6 | /**
7 | * Computes message authentication code (MAC) for `data`.
8 | *
9 | * @return MAC value
10 | */
11 | @Throws(GeneralSecurityException::class)
12 | fun computeMac(data: ByteArray?): ByteArray?
13 |
14 | /**
15 | * Verifies whether `mac` is a correct authentication code (MAC) for `data`.
16 | *
17 | * @throws GeneralSecurityException if `mac` is not a correct MAC for `data`
18 | */
19 | @Throws(GeneralSecurityException::class)
20 | fun verifyMac(mac: ByteArray?, data: ByteArray?)
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_icon_unlock_uncheck.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
14 |
15 |
--------------------------------------------------------------------------------
/doc/class/CHSesameConnector.md:
--------------------------------------------------------------------------------
1 | # CHSesameConnector インターフェース
2 | ```svg
3 |
4 |
5 | interface CHSesameConnector : CHDevices {
6 | var ssm2KeysMap: MutableMap
7 | fun insertSesame(sesame: CHDevices, result: CHResult)
8 | fun removeSesame(tag: String, result: CHResult)
9 | }
10 | ```
11 | `CHSesameConnector` はデバイスコネクタのインターフェースで、`CHDevices`を継承しています。Sesameデバイスを管理および操作します。
12 |
13 | ## プロパティ
14 |
15 | - `ssm2KeysMap: MutableMap` - Sesame2デバイスのキーのマッピングを保存します。
16 |
17 | ## メソッド
18 |
19 | - `fun insertSesame(sesame: CHDevices, result: CHResult)` - Sesameデバイスを挿入し、操作結果を返します。
20 | - `fun removeSesame(tag: String, result: CHResult)` - 指定されたラベルに基づいてSesameデバイスを削除し、操作結果を返します。
21 |
22 |
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/server/dto/CHFaceNameRequest.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.server.dto
2 |
3 | import com.google.gson.annotations.SerializedName
4 | import java.sql.Timestamp
5 |
6 | // json data class
7 | data class CHFaceNameRequest(
8 | @SerializedName("type") val type: Byte,
9 | @SerializedName("faceNameUUID") val faceNameUUID: String,
10 | @SerializedName("subUUID") val subUUID: String,
11 | @SerializedName("stpDeviceUUID") val stpDeviceUUID: String,
12 | @SerializedName("name") val name: String,
13 | @SerializedName("faceID") val faceID: String,
14 | @SerializedName("timestamp") val timestamp: Long = Timestamp(System.currentTimeMillis()).time,
15 | @SerializedName("op") val op: String
16 | )
17 |
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/server/dto/CHPalmNameRequest.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.server.dto
2 |
3 | import com.google.gson.annotations.SerializedName
4 | import java.sql.Timestamp
5 |
6 | // json data class
7 | data class CHPalmNameRequest(
8 | @SerializedName("type") val type: Byte,
9 | @SerializedName("palmNameUUID") val palmNameUUID: String,
10 | @SerializedName("subUUID") val subUUID: String,
11 | @SerializedName("stpDeviceUUID") val stpDeviceUUID: String,
12 | @SerializedName("name") val name: String,
13 | @SerializedName("palmID") val palmID: String,
14 | @SerializedName("timestamp") val timestamp: Long = Timestamp(System.currentTimeMillis()).time,
15 | @SerializedName("op") val op: String
16 | )
17 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/nfc_tech_filter.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | android.nfc.tech.IsoDep
5 |
6 | android.nfc.tech.NfcA
7 |
8 | android.nfc.tech.NfcB
9 |
10 | android.nfc.tech.NfcF
11 |
12 | android.nfc.tech.NfcV
13 |
14 | android.nfc.tech.Ndef
15 |
16 | android.nfc.tech.NdefFormatable
17 |
18 | android.nfc.tech.MifareClassic
19 |
20 | android.nfc.tech.MifareUltralight
21 |
22 |
23 |
--------------------------------------------------------------------------------
/doc/class/SSM3PublishPayload.md:
--------------------------------------------------------------------------------
1 | ## SSM3PublishPayload クラス
2 | ```svg
3 | class SSM3PublishPayload(val data: ByteArray) {
4 | val cmdItCode = data[0].toUByte()
5 | val payload: ByteArray = data.drop(1).toByteArray()
6 | }
7 | ```
8 | ### 説明
9 |
10 | `SSM3PublishPayload` は、SSM3プロトコルに関連するペイロード(データ)を処理するためのKotlinクラスです。このクラスをインスタンス化する際には、バイト配列(ByteArray)を引数として渡す必要があります。
11 |
12 | ### プロパティ
13 |
14 | - `data`:ByteArray型のインスタンス変数です。この変数の値は、クラスのインスタンスを作成する際に提供する必要があります。
15 |
16 | - `cmdItCode`:提供された`data`配列の最初のバイトをUByte(符号なしバイト)に変換します。
17 |
18 | - `payload`:`cmdItCode`の後に残る`data`の部分です。`data.drop(1)`を使用して、最初の要素を除いたすべての要素が含まれる新しい配列を生成します。
19 |
20 | ### 使用
21 |
22 | このクラスを使用するには、`SSM3PublishPayload`クラスのインスタンスを作成し、コンストラクタにバイト配列を渡す必要があります。この配列の最初のバイトは`cmdItCode`に変換されます。
--------------------------------------------------------------------------------
/doc/class/SesameBleTransmit_jp.md:
--------------------------------------------------------------------------------
1 | # SesameBleTransmit クラスのドキュメント
2 |
3 | ```svg
4 |
5 | internal class SesameBleTransmit(var type: DeviceSegmentType, var input: ByteArray) {
6 | var isStart = 1
7 | internal fun getChunk(): ByteArray?
8 | }
9 |
10 | ```
11 | `SesameBleTransmit` は、内部クラスです。
12 |
13 | ## プロパティ
14 |
15 | - `type`:`DeviceSegmentType` 列挙値の変数で、データの種類を示します。
16 | - `input`:バイト配列型の変数で、送信するデータを表します。
17 | - `isStart`:整数型の変数で、データ送信の開始を示すために使用されます。初期値は1で、送信が開始されると0に、送信が終了すると-1に設定されます。
18 |
19 | ## メソッド
20 |
21 | - `getChunk(): ByteArray?`:このメソッドは、データのチャンク(一部)を表すバイト配列を返します。`isStart` が-1の場合、データがすべて送信されていることを示します。この場合、`null` を返します。`input` のサイズが19以下の場合、すべてのデータが一度に送信され、`isStart` が-1に設定されます。`input` のサイズが19より大きい場合、19バイトのデータが一度に送信され、すべてのデータが送信されるまで繰り返し送信されます。
22 |
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/open/device/sesameBiometric/capability/passcode/CHPassCodeDelegate.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.open.device.sesameBiometric.capability.passcode
2 |
3 | import co.candyhouse.sesame.open.device.CHSesameConnector
4 |
5 | interface CHPassCodeDelegate {
6 | fun onKeyBoardReceive(device: CHSesameConnector, ID: String, hexName: String, type: Byte) {}
7 | fun onKeyBoardChanged(device: CHSesameConnector, ID: String, hexName: String, type: Byte) {}
8 | fun onKeyBoardReceiveEnd(device: CHSesameConnector) {}
9 | fun onKeyBoardReceiveStart(device: CHSesameConnector) {}
10 | fun onKeyBoardModeChange(device: CHSesameConnector, mode: Byte) {}
11 | fun onKeyBoardDelete(device: CHSesameConnector, ID: String) {}
12 | }
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/server/dto/CHCardNameRequest.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.server.dto
2 |
3 | import com.google.gson.annotations.SerializedName
4 | import java.sql.Timestamp
5 |
6 | // json data class
7 | data class CHCardNameRequest(
8 | @SerializedName("cardType") val cardType: Byte,
9 | @SerializedName("cardNameUUID") val cardNameUUID: String,
10 | @SerializedName("subUUID") val subUUID: String,
11 | @SerializedName("stpDeviceUUID") val stpDeviceUUID: String,
12 | @SerializedName("name") val name: String,
13 | @SerializedName("cardID") val cardID: String,
14 | @SerializedName("timestamp") val timestamp: Long = Timestamp(System.currentTimeMillis()).time,
15 | @SerializedName("op") val op: String
16 | )
17 |
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/open/device/sesameBiometric/capability/face/CHFaceDelegate.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.open.device.sesameBiometric.capability.face
2 |
3 | import co.candyhouse.sesame.ble.os3.CHSesameTouchFace
4 | import co.candyhouse.sesame.open.device.CHSesameConnector
5 |
6 | interface CHFaceDelegate {
7 | fun onFaceModeChanged(device: CHSesameConnector, mode: Byte) {}
8 | fun onFaceReceiveStart(device: CHSesameConnector) {}
9 | fun onFaceReceive(device: CHSesameConnector, face: CHSesameTouchFace) {}
10 | fun onFaceChanged(device: CHSesameConnector, face: CHSesameTouchFace) {}
11 | fun onFaceReceiveEnd(device: CHSesameConnector) {}
12 | fun onFaceDeleted(device: CHSesameConnector, faceID: Byte, isSuccess: Boolean) {}
13 | }
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/server/dto/CHHistoryUploadRequest.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.server.dto
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | internal data class CHSSMHisUploadRequest(@SerializedName("s") var device_id: String, @SerializedName("v") var historys: String)
6 | internal data class CHSS5HisUploadRequest(@SerializedName("s") var device_id: String, @SerializedName("v") var historys: String, @SerializedName("t") var type: String)
7 |
8 | internal data class CHRemoveSignKeyRequest(var deviceId: String, var token: String, var secretKey: String)
9 |
10 | internal data class CHSS2WebCMDReq(var cmd: Byte, var history: String, var sign: String)
11 |
12 | internal data class CHFcmTokenUpload(var deviceId: String, var token: String)
--------------------------------------------------------------------------------
/app/src/main/java/cn/bingoogolapple/qrcode/core/BarcodeType.java:
--------------------------------------------------------------------------------
1 | package cn.bingoogolapple.qrcode.core;
2 |
3 | /**
4 | * 作者:王浩
5 | * 创建时间:2018/6/20
6 | * 描述:识别的格式
7 | */
8 | public enum BarcodeType {
9 | /**
10 | * 所有格式
11 | */
12 | ALL,
13 | /**
14 | * 所有一维条码格式
15 | */
16 | ONE_DIMENSION,
17 | /**
18 | * 所有二维条码格式
19 | */
20 | TWO_DIMENSION,
21 | /**
22 | * 仅 QR_CODE
23 | */
24 | ONLY_QR_CODE,
25 | /**
26 | * 仅 CODE_128
27 | */
28 | ONLY_CODE_128,
29 | /**
30 | * 仅 EAN_13
31 | */
32 | ONLY_EAN_13,
33 | /**
34 | * 高频率格式,包括 QR_CODE、ISBN13、UPC_A、EAN_13、CODE_128
35 | */
36 | HIGH_FREQUENCY,
37 | /**
38 | * 自定义格式
39 | */
40 | CUSTOM
41 | }
42 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/round_blue.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 | -
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_icons_filled_album.xml:
--------------------------------------------------------------------------------
1 |
6 |
12 |
13 |
--------------------------------------------------------------------------------
/doc/class/CHSesameConnector_jp.md:
--------------------------------------------------------------------------------
1 | # CHSesameConnector インターフェースのドキュメント
2 |
3 | ```svg
4 |
5 |
6 | interface CHSesameConnector : CHDevices {
7 | var ssm2KeysMap: MutableMap
8 | fun insertSesame(sesame: CHDevices, result: CHResult)
9 | fun removeSesame(tag: String, result: CHResult)
10 | }
11 | ```
12 |
13 | `CHSesameConnector` は、デバイス接続コネクタのインターフェースであり、`CHDevices` インターフェースを継承しています。Sesame デバイスの管理と操作を担当します。
14 |
15 | ## 属性
16 |
17 | - `ssm2KeysMap: MutableMap` - Sesame2 デバイスのキーを格納するマップです。
18 |
19 | ## メソッド
20 |
21 | - `fun insertSesame(sesame: CHDevices, result: CHResult)` - Sesame デバイスを挿入し、操作結果を返します。
22 | - `fun removeSesame(tag: String, result: CHResult)` - 指定されたタグに基づいて Sesame デバイスを削除し、操作結果を返します。
23 |
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/open/device/sesameBiometric/capability/fingerPrint/CHFingerPrintDelegate.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.open.device.sesameBiometric.capability.fingerPrint
2 |
3 | import co.candyhouse.sesame.open.device.CHSesameConnector
4 |
5 | interface CHFingerPrintDelegate {
6 | fun onFingerPrintReceive(device: CHSesameConnector, ID: String, hexName: String, type: Byte) {}
7 | fun onFingerPrintChanged(device: CHSesameConnector, ID: String, hexName: String, type: Byte) {}
8 | fun onFingerPrintReceiveEnd(device: CHSesameConnector) {}
9 | fun onFingerPrintReceiveStart(device: CHSesameConnector) {}
10 | fun onFingerModeChange(device: CHSesameConnector, mode: Byte) {}
11 | fun onFingerDelete(device: CHSesameConnector, ID: String) {}
12 | }
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/open/device/sesameBiometric/capability/palm/CHPalmDelegate.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.open.device.sesameBiometric.capability.palm
2 |
3 | import co.candyhouse.sesame.ble.os3.CHSesameTouchFace
4 | import co.candyhouse.sesame.open.device.CHSesameConnector
5 |
6 | interface CHPalmDelegate {
7 | fun onPalmModeChanged(device: CHSesameConnector, mode: Byte) {}
8 | fun onPalmReceive(device: CHSesameConnector, tochface: CHSesameTouchFace) {}
9 | fun onPalmChanged(device: CHSesameConnector, tochface: CHSesameTouchFace) {}
10 | fun onPalmReceiveStart(device: CHSesameConnector) {}
11 | fun onPalmReceiveEnd(device: CHSesameConnector) {}
12 | fun onPalmDeleted(device: CHSesameConnector, palmID: Byte, isSuccess: Boolean) {}
13 | }
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_icons_filled_more.xml:
--------------------------------------------------------------------------------
1 |
6 |
12 |
13 |
--------------------------------------------------------------------------------
/doc/command/magnet.md:
--------------------------------------------------------------------------------
1 | # Magnet 角度補正
2 |
3 | ### 送信フォーマット
4 | | Byte | 0 |
5 | |:----:|:----:|
6 | | Data | command |
7 | - command:命令17(固定)
8 |
9 |
10 | ### 受信フォーマット
11 | | Byte | 2 | 1 | 0 |
12 | |:----:|:----:|:----:|:----:|
13 | | Data | status | command | response |
14 | - command:命令17(固定)
15 | - response:応答0x07(固定)
16 | - status:状態0x00(成功)
17 | ### フローチャート
18 | 
19 |
20 |
21 |
22 |
23 |
24 | ### android例
25 | ``` java
26 | override fun magnet(result: CHResult) {
27 | if (checkBle(result)) return
28 | sendCommand(SesameOS3Payload(SesameItemCode.magnet.value, byteArrayOf()), DeviceSegmentType.cipher) { res ->
29 | result.invoke(Result.success(CHResultState.CHResultStateBLE(CHEmpty())))
30 | }
31 | }
32 | ```
33 |
--------------------------------------------------------------------------------
/doc/sesame_code_cls.md:
--------------------------------------------------------------------------------
1 | Classオブジェクト一覧
2 | ===============
3 | - [CHSesame5Device](class/CHSesame5Device.md):このインスタンスオブジェクトは Sesame5 および Sesame5 Pro 製品に適用されます。
4 | - [CHSesameBike2Device](class/CHSesameBike2Device.md) : このインスタンスオブジェクトは Sesame Bike 2 製品に適用されます。
5 | - [CHWifiModule2Device](class/CHWifiModule2Device.md):このインスタンスオブジェクトは Sesame WiFi Module 2 製品に適用されます。
6 | - [CHSesameTouchProDevice](class/CHSesameTouchProDevice.md):このインスタンスオブジェクトは Sesame BLE Connector1、 Sesame Touch 1 Pro 、 Sesame Open Sensor 1、 Sesame Touch 1 製品に適用されます。
7 | - [CHProductModel](class/CHProductModel.md):Sesame Os3 シリーズ製品の所属タイプ、モデル、名前、実装クラスを定義します。
8 |
9 | - [SesameItemCode](class/SesameItemCode.md):ble目標命令
10 | - [SesameResultCode](class/SesameResultCode.md):ble 応答結果の種類
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/server/dto/CHFingerPrintNameRequest.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.server.dto
2 |
3 | import com.google.gson.annotations.SerializedName
4 | import java.sql.Timestamp
5 |
6 | // json data class
7 | data class CHFingerPrintNameRequest(
8 | @SerializedName("type") val type: Byte,
9 | @SerializedName("fingerPrintNameUUID") val fingerPrintNameUUID: String,
10 | @SerializedName("subUUID") val subUUID: String,
11 | @SerializedName("stpDeviceUUID") val stpDeviceUUID: String,
12 | @SerializedName("name") val name: String,
13 | @SerializedName("fingerPrintID") val fingerPrintID: String,
14 | @SerializedName("timestamp") val timestamp: Long = Timestamp(System.currentTimeMillis()).time,
15 | @SerializedName("op") val op: String
16 | )
17 |
--------------------------------------------------------------------------------
/doc/class/DeviceSegmentType_jp.md:
--------------------------------------------------------------------------------
1 | # DeviceSegmentType 列挙型
2 |
3 | ```svg
4 | internal enum class DeviceSegmentType(var value: Int) {
5 | plain(1), cipher(2), ;
6 | companion object {
7 | private val values = values()
8 | fun getByValue(value: Int) = values.first { it.value == value }
9 | }
10 | }
11 | ```
12 | `DeviceSegmentType` は、デバイスセグメントのタイプを示す内部の列挙型です。
13 |
14 | ## 列挙値
15 |
16 | この列挙型は、複数の列挙項目を含んでおり、デバイスセグメントのタイプを表します。各列挙項目は `Int` 型の値を持ちます。
17 |
18 | 以下は `DeviceSegmentType` 列挙型の詳細な一覧です:
19 |
20 | | 列挙値 | 値 | 説明 |
21 | |---|---|---|
22 | | plain | 1 | 平文 |
23 | | cipher | 2 | 暗号文 |
24 |
25 | ## 伴生オブジェクト
26 |
27 | `DeviceSegmentType` 列挙型には、以下の機能を提供する伴生オブジェクトがあります:
28 |
29 | - `values`:すべての列挙値を返します。
30 | - `getByValue`:与えられた値に対応する列挙項目を返します。対応する列挙項目が見つからない場合、例外がスローされます。
31 |
--------------------------------------------------------------------------------
/doc/class/CHBaseAdv.md:
--------------------------------------------------------------------------------
1 | # CHBaseAdv インターフェース
2 | ```svg
3 |
4 | internal interface CHBaseAdv {
5 | val rssi: Int?
6 | val isRegistered: Boolean
7 | val adv_tag_b1: Boolean
8 | val deviceID: UUID?
9 | var device: BluetoothDevice
10 | var deviceName: String?
11 | var productModel: CHProductModel?
12 | var isConnecable: Boolean?
13 | }
14 | ```
15 |
16 |
17 | `CHBaseAdv` は内部インターフェースです。
18 |
19 | ## プロパティ
20 |
21 | - `rssi`: `Int?`型で、受信号強度の指示子です。
22 | - `isRegistered`: `Boolean`型で、登録しているかどうかを判断します。
23 | - `adv_tag_b1`: `Boolean`型で、アドバタイジングのタグです。
24 | - `deviceID`: `UUID?`型で、デバイスIDです。
25 | - `device`: `BluetoothDevice`型で,Bluetoothデバイスです。
26 | - `deviceName`: `String?`型で、デバイス名です。
27 | - `productModel`: `CHProductModel?`型で、製品モデルです。
28 | - `isConnecable`: `Boolean?`型で、接続可能かどうかを判断します。
29 |
--------------------------------------------------------------------------------
/doc/class/SesameNotifypayload.md:
--------------------------------------------------------------------------------
1 | ## SesameNotifypayload クラス
2 | ```
3 | internal class SesameNotifypayload(val data: ByteArray) {
4 | val notifyOpCode: SSM2OpCode = SSM2OpCode.getByValue(data[0])
5 | val payload: ByteArray = data.drop(1).toByteArray()
6 | }
7 | ```
8 | ### 説明
9 |
10 | `SesameNotifypayload`は`Sesame`の通知のペイロードを処理するためのKotlinの内部クラスです。このクラスのインスタンス化する際には、バイト配列を渡す必要があります。
11 |
12 | ### プロパティ
13 |
14 | - `data`:ByteArray型のインスタンス変数です。この`data`変数は、クラスのインスタンスを作成する際に提供する必要があります。
15 |
16 | - `notifyOpCode`: 提供された`data`配列の最初のバイトの値を取得し、`SSM2OpCode.getByValue`関数に渡して、その結果を`notifyOpCode`として設定します。
17 |
18 | - `payload`: `notifyOpCode`の後にある`data`の残りの部分です。`data.drop(1)`を使用すると、新しい配列が生成され、最初の要素以外のすべての要素が含まれます。
19 |
20 | ### 使用
21 |
22 | このクラスを使用するには、`SesameNotifyPayload`オブジェクトをインスタンス化し、そのコンストラクタにバイト配列を提供する必要があります。
--------------------------------------------------------------------------------
/doc/sesame_code_cls_ja.md:
--------------------------------------------------------------------------------
1 | Class オブジェクトリスト
2 | ===============
3 | - [CHSesame5Device](class/CHSesame5Device.md): このインスタンスオブジェクトは Sesame5 および Sesame5 Pro 製品に適用されます。
4 | - [CHSesameBike2Device](class/CHSesameBike2Device.md): このインスタンスオブジェクトは Sesame Bike 2 製品に適用されます。
5 | - [CHWifiModule2Device](class/CHWifiModule2Device.md): このインスタンスオブジェクトは Sesame WiFi Module 2 製品に適用されます。
6 | - [CHSesameTouchProDevice](class/CHSesameTouchProDevice.md): このインスタンスオブジェクトは Sesame BLE Connector1、Sesame Touch 1 Pro、Sesame Open Sensor 1、Sesame Touch 1 製品に適用されます。
7 | - [CHProductModel](class/CHProductModel_jp.md): Sesame Os3 シリーズ製品の所属タイプ、モデル、名前、実装クラスを定義します。
8 | - [SSM2OpCode](class/SSM2OpCode_jp.md): 操作コードの種類
9 | - [SesameItemCode](class/SesameItemCode_jp.md): BLE ターゲットコード
10 | - [SesameResultCode](class/SesameResultCode_jp.md): BLE レスポンス結果のカテゴリ
11 |
12 |
--------------------------------------------------------------------------------
/doc/command/sesameblot.md:
--------------------------------------------------------------------------------
1 | # Bot1 讲解
2 | ## 实现类 CHSesameBotDevice
3 | ### 接口
4 |
7 | ```agsl
8 | fun updateSetting(setting: CHSesameBotMechSettings, historyTag: ByteArray? = null, result: CHResult)
9 |
10 | fun click(historyTag: ByteArray? = null, result: CHResult)
11 | fun reset(result: CHResult)
12 | fun getVersionTag(result: CHResult)
13 | ```
14 | ### 接口功能字义
15 |
16 | - [updateSetting](updatasetting.md):模式设置
17 | - [click](click.md):点击复原
18 | - [getVersionTag](ssm5version.md):获取版本号
19 | - [reset](reset.md):重置设备
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/doc/touch/card_last.md:
--------------------------------------------------------------------------------
1 | # Card last 讲解
2 |
3 | ### 发送格式
4 |
5 | | Byte | 0 |
6 | |:------:|:----:|
7 | | Data | | command |
8 |
9 | - command:指令111(固定)
10 |
11 |
12 | ### 接收格式
13 |
14 | | Byte | 2 | 1 | 0 |
15 | |:---:|:----:|:----:|:-----:|
16 | | Data | status | command |response |
17 | - command:指令111(固定)
18 | - response:响应0x07(固定)
19 | - status:状态0x00(成功)
20 |
21 |
22 | ### 循序图
23 |
24 |
25 |
26 |
27 |
28 |
29 | ### android示例
30 | ``` java
31 | override fun onGattSesamePublish(receivePayload: SSM3PublishPayload) {
32 | super.onGattSesamePublish(receivePayload)
33 | if (receivePayload.cmdItCode == SesameItemCode.SSM_OS3_CARD_LAST.value) {
34 | (delegate as? CHSesameTouchProDelegate)?.onCardReceiveEnd(this)
35 | }
36 |
37 | }
38 | ```
39 |
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/server/dto/CHKeyBoardPassCodeNameRequest.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.server.dto
2 |
3 | import com.google.gson.annotations.SerializedName
4 | import java.sql.Timestamp
5 |
6 | // json data class
7 | data class CHKeyBoardPassCodeNameRequest(
8 | @SerializedName("type") val type: Byte,
9 | @SerializedName("keyBoardPassCodeNameUUID") val keyBoardPassCodeNameUUID: String,
10 | @SerializedName("subUUID") val subUUID: String,
11 | @SerializedName("stpDeviceUUID") val stpDeviceUUID: String,
12 | @SerializedName("name") val name: String,
13 | @SerializedName("keyBoardPassCode") val keyBoardPassCode: String,
14 | @SerializedName("timestamp") val timestamp: Long = Timestamp(System.currentTimeMillis()).time,
15 | @SerializedName("op") val op: String
16 | )
17 |
--------------------------------------------------------------------------------
/doc/ble_product_serials.md:
--------------------------------------------------------------------------------
1 | Bleプロジェクトのコード例に関する説明一覧
2 | ========
3 |
8 | ### 1. [Sesame 5](command/sesame5fun.md)
9 | ### 2. [Sesame 5 Pro ](command/sesame5fun.md)
10 | ### 3. [Sesame Bike 2](command/sesamebike2fun.md)
11 | ### 4. [Sesame WiFi Module 2](command/sesamewifimodule.md)
12 | ### 5. [Sesame BLE Connector1](command/sesametouchpro.md)
13 | ### 6. [Sesame Touch 1 Pro](command/sesametouchpro.md)
14 | ### 7. [Sesame Open Sensor 1](command/sesame_open_sensor.md)
15 | ### 8. [Sesame Touch 1](command/sesametouchpro.md)
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/doc/class/SSM3PublishPayload_jp.md:
--------------------------------------------------------------------------------
1 | # SSM3PublishPayload クラスドキュメント
2 | ```svg
3 | class SSM3PublishPayload(val data: ByteArray) {
4 | val cmdItCode = data[0].toUByte()
5 | val payload: ByteArray = data.drop(1).toByteArray()
6 | }
7 | ```
8 | ### 説明
9 |
10 | `SSM3PublishPayload` は、SSM3プロトコルに関連するペイロード(データの負荷部分)を処理するためのKotlinクラスです。このクラスをインスタンス化する際には、バイト配列(ByteArray)を引数として渡す必要があります。
11 |
12 | ### プロパティ
13 |
14 | - `data`:ByteArray型のインスタンス変数です。この変数の値は、クラスのインスタンスを作成する際に提供する必要があります。
15 |
16 | - `cmdItCode`:提供された `data` 配列の最初のバイトを `UByte` (符号なしバイト)に変換した値です。
17 |
18 | - `payload`:これは `cmdItCode` の後に残る `data` 部分です。`data.drop(1)` を使用して、`data` 中の最初の要素を除いたすべての要素から新しい配列を生成します。
19 |
20 | ### 使用方法
21 |
22 | このクラスを使用するには、`SSM3PublishPayload` クラスのインスタンスを作成し、そのコンストラクタにバイト配列を提供する必要があります。この配列の最初のバイトは `cmdItCode` に変換され、残りの部分は `payload` に格納されます。
23 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_icons_outlined_share.xml:
--------------------------------------------------------------------------------
1 |
6 |
12 |
13 |
--------------------------------------------------------------------------------
/doc/class/CHWifiModule2_jp.md:
--------------------------------------------------------------------------------
1 | # CHWifiModule2 インターフェースのドキュメント
2 |
3 | `CHWifiModule2` は、デバイスに関連する操作を含むインターフェースであり、`CHDevices` インターフェースを継承しています。基本的なデバイス操作に加えて、WiFiモジュールに関連する操作も含まれています。
4 |
5 | ## 属性
6 |
7 | - `ssm2KeysMap: MutableMap` - Sesame2キーマップ
8 | - `mechSetting: CHWifiModule2MechSettings?` - WiFiモジュールのメカニズム設定
9 |
10 | ## メソッド
11 |
12 | - `fun scanWifiSSID(result: CHResult)` - WiFi SSIDをスキャンする
13 | - `fun setWifiSSID(ssid: String, result: CHResult)` - WiFi SSIDを設定する
14 | - `fun setWifiPassword(password: String, result: CHResult)` - WiFiパスワードを設定する
15 | - `fun connectWifi(result: CHResult)` - WiFiに接続する
16 | - `fun insertSesames(sesame: CHDevices, result: CHResult)` - Sesameデバイスを挿入する
17 | - `fun removeSesame(sesameKeyTag: String, result: CHResult)` - Sesameデバイスを削除する
18 |
--------------------------------------------------------------------------------
/doc/class/SSM2OpCode_jp.md:
--------------------------------------------------------------------------------
1 | # SSM2OpCode 列挙型
2 |
3 | `SSM2OpCode` は、操作コードを表す内部の列挙型です。
4 |
5 | ## 列挙値
6 |
7 | - `create`: 値は `0x01` で、作成操作を示します。
8 | - `read`: 値は `0x02` で、読み取り操作を示します。
9 | - `update`: 値は `0x03` で、更新操作を示します。
10 | - `delete`: 値は `0x04` で、削除操作を示します。
11 | - `sync`: 値は `0x05` で、同期操作を示します。
12 | - `async`: 値は `0x06` で、非同期操作を示します。
13 | - `response`: 値は `0x07` で、応答操作を示します。
14 | - `publish`: 値は `0x08` で、公開操作を示します。
15 | - `undefine`: 値は `0x10` で、未定義の操作を示します。
16 |
17 | | SSM2OpCode | 操作名 | 説明 |
18 | | ------ | -------- | ------ |
19 | | 0x01 | create | 作成 |
20 | | 0x02 | read | 読み取り |
21 | | 0x03 | update | 更新 |
22 | | 0x04 | delete | 削除 |
23 | | 0x05 | sync | 同期 |
24 | | 0x06 | async | 非同期 |
25 | | 0x07 | response | 応答 |
26 | | 0x08 | publish | 公開 |
27 | | 0x10 | undefine | 未定義 |
28 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/find_friend.xml:
--------------------------------------------------------------------------------
1 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/doc/ble_product_serials_jp.md:
--------------------------------------------------------------------------------
1 | BLEプロダクトコード例解説一覧
2 | ========
3 |
8 | ### 1. [Sesame 5](command/sesame5fun_jp.md)
9 | ### 2. [Sesame 5 Pro ](command/sesame5fun_jp.md)
10 | ### 3. [Sesame Bike 2](command/sesamebike2fun_jp.md)
11 | ### 4. [Sesame WiFi Module 2](command/sesamewifimodule_jp.md)
12 | ### 5. [Sesame BLE Connector1](command/sesametouchpro_jp.md)
13 | ### 6. [Sesame Touch 1 Pro](command/sesametouchpro_jp.md)
14 | ### 7. [Sesame Open Sensor 1](command/sesame_open_sensor_jp.md)
15 | ### 8. [Sesame Touch 1](command/sesametouchpro_jp.md)
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/doc/class/CHSesameSensor.md:
--------------------------------------------------------------------------------
1 |
2 | # CHSesameSensor インターフェース
3 | ```svg
4 |
5 | interface CHSesameSensor : CHSesameLock, CHSesameConnector {
6 | fun unlock(historytag: ByteArray? = null, result: CHResult)
7 | fun deleteCards(cardID: String, result: CHResult)
8 | fun getCards(result: CHResult>)
9 | }
10 | ```
11 |
12 | `CHSesameSensor`は、`CHSesameLock`および`CHSesameConnector`インターフェースを継承したデバイスインターフェースです。Sesame Sensorデバイスの管理と操作に特化しています。
13 |
14 | ## メソッド
15 |
16 | - `fun unlock(historyTag: ByteArray? = null, result: CHResult)` - Sesame Sensorのロックを解除します。
17 |
18 | - `fun deleteCards(cardID: String, result: CHResult)` - 指定されたカードを削除します。
19 |
20 | - `fun getCards(result: CHResult>)` - すべてのカードを取得します。
21 |
22 | 上記は`CHSesameSensor`インターフェースについての基本的な説明です。Sesame Sensorデバイスに対して完全な操作と管理方法を提供します。
23 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/round_red_unlock_all.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
10 | -
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/doc/class/DeviceSegmentType.md:
--------------------------------------------------------------------------------
1 | # # DeviceSegmentType 列挙型
2 |
3 | ```svg
4 | internal enum class DeviceSegmentType(var value: Int) {
5 | plain(1), cipher(2), ;
6 | companion object {
7 | private val values = values()
8 | fun getByValue(value: Int) = values.first { it.value == value }
9 | }
10 | }
11 | ```
12 |
13 |
14 |
15 |
16 | `DeviceSegmentType` は内部の列挙型です。
17 |
18 | ## 列挙値
19 |
20 | この列挙型には、多くの列挙項目が含まれており、それぞれ異なるデバイスのセグメントタイプに対応しています。各列挙項目は `Int` 型の値を持っています。
21 |
22 | 以下は`DeviceSegmentType` 列挙型の詳細なリストです。
23 |
24 | | 命令名 | SegmentType | 説明 |
25 | |:---:|:---:|:---|
26 | | plain | 1 | 暗号化されていないデータ |
27 | | cipher | 2 | 暗号化されているデータ |
28 |
29 | ## 伴生オブジェクト
30 |
31 | `DeviceSegmentType` 列挙型には、次の機能を提供する伴生オブジェクトがあります。
32 |
33 | - `values`:すべての値を返します。
34 | - `getByValue`:指定された値によって対応の列挙項目を返します。対応の列挙項目が見つからない場合はエラーを返します。
35 |
36 |
--------------------------------------------------------------------------------
/app/src/main/java/co/candyhouse/app/ext/AppLifecycleObserver.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.app.ext
2 |
3 | import androidx.lifecycle.DefaultLifecycleObserver
4 | import androidx.lifecycle.LifecycleOwner
5 | import co.candyhouse.sesame.utils.L
6 |
7 | /**
8 | * APP应用状态监听
9 | *
10 | * @author frey on 2025/2/17
11 | */
12 | class AppLifecycleObserver : DefaultLifecycleObserver {
13 | var isAppForeground = false
14 | private set
15 |
16 | override fun onStart(owner: LifecycleOwner) {
17 | // 应用进入前台
18 | L.d("sf", "App is in the foreground")
19 | super.onStart(owner)
20 | isAppForeground = true
21 | }
22 |
23 | override fun onStop(owner: LifecycleOwner) {
24 | // 应用进入后台
25 | L.d("sf", "App is in the background")
26 | super.onStop(owner)
27 | isAppForeground = false
28 | }
29 |
30 | }
--------------------------------------------------------------------------------
/doc/class/CHDeviceUtil_jp.md:
--------------------------------------------------------------------------------
1 | # CHDeviceUtil インターフェースドキュメント
2 | ```svg
3 | internal interface CHDeviceUtil {
4 | var advertisement: CHadv?
5 | var sesame2KeyData: CHDevice?
6 | fun goIOT() {}
7 | fun login(token: String? = null)
8 | }
9 | ```
10 | ### 説明
11 |
12 | `CHDeviceUtil` は、デバイス関連の操作を定義するための内部インターフェースです。
13 |
14 | ### プロパティ
15 |
16 | - `advertisement`:`CHadv` 型の変数で、広告に関連するデータです。広告がない場合、`null` の可能性があります。
17 |
18 | - `sesame2KeyData`:`CHDevice` インスタンス変数で、デバイス(おそらく "鍵" を指す)に関連するデータが格納されます。
19 |
20 | ### メソッド
21 |
22 | - `goIOT` メソッド:このメソッドは、IoT(Internet of Things)に関連するサービスを購読するためのものです。このメソッドは、インターフェース内でデフォルトの空実装が提供されていますが、具体的な実装クラスで上書きすることができます。
23 |
24 | - `login` メソッド:このメソッドは、ログイン操作に使用されます。匿名引数 `token` のデフォルト値は `null` です。
25 |
26 | ### 使用方法
27 |
28 | このインターフェースを使用するには、`CHDeviceUtil` インターフェースを実装したクラスを作成し、そのクラスをインスタンス化します。そのクラス内では、必要に応じて
29 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_icon_lock_uncheck.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
14 |
15 |
--------------------------------------------------------------------------------
/doc/class/CHSesameLock.md:
--------------------------------------------------------------------------------
1 |
2 | # CHSesameLock インターフェース
3 | ```svg
4 | interface CHSesameLock : CHDevices {
5 |
6 | fun isEnableNotification(fcmToken: String, result: CHResult)
7 |
8 | fun enableNotification(fcmToken: String, result: CHResult)
9 |
10 | fun disableNotification(fcmToken: String, result: CHResult)
11 | }
12 | ```
13 |
14 | `CHSesameLock` は、`CHDevices` インターフェースを継承したデバイスのインターフェースです。Sesame lockデバイスを管理および操作します。
15 |
16 | ## メソッド
17 |
18 | - `fun isEnableNotification(fcmToken: String, result: CHResult)` - 通知が有効になっているかどうかをチェックします。通知が有効な場合はtrueを返し、それ以外の場合はfalseを返します。
19 | - `fun enableNotification(fcmToken: String, result: CHResult)` - 通知を有効にします。操作が成功した場合は操作結果を返し、それ以外の場合はエラーメッセージを返します。
20 | - `fun disableNotification(fcmToken: String, result: CHResult)` - 通知を無効にします。操作が成功した場合は操作結果を返し、それ以外の場合はエラーメッセージを返します。
21 |
22 |
--------------------------------------------------------------------------------
/sesame-sdk/src/main/java/co/candyhouse/sesame/ble/os2/base/CHSesameOS2.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.sesame.ble.os2.base
2 |
3 | import co.candyhouse.sesame.ble.*
4 | import co.candyhouse.sesame.ble.CHBaseDevice
5 | import co.candyhouse.sesame.utils.*
6 | import kotlinx.coroutines.channels.Channel
7 |
8 | internal typealias SesameOS2ResponseCallback = (result: SSM2ResponsePayload) -> Unit
9 |
10 | internal open class CHSesameOS2 : CHBaseDevice() {
11 | var cipher: SesameOS2BleCipher? = null
12 | var semaphore: Channel = Channel(capacity = 1)
13 | val mAppToken = generateRandomData(4)
14 | }
15 | internal data class SSM2Payload(val opCode: SSM2OpCode, val itemCode: SesameItemCode, val data: ByteArray) {
16 | fun toDataWithHeader(): ByteArray {
17 | return byteArrayOf(opCode.value, itemCode.value.toByte()) + data
18 | }
19 | }
--------------------------------------------------------------------------------
/app/src/main/java/co/candyhouse/server/dto/IrDeviceAddRequest.kt:
--------------------------------------------------------------------------------
1 | package co.candyhouse.server.dto
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class IrDeviceAddRequest(
6 | @SerializedName("uuid") val uuid: String,
7 | @SerializedName("model") val model: String,
8 | @SerializedName("state") val state: String,
9 | @SerializedName("alias") val alias: String,
10 | @SerializedName("type") val type: Int,
11 | @SerializedName("deviceUUID") val deviceId: String,
12 | @SerializedName("code") val code: Int,
13 | @SerializedName("keys") val keys: Array