joyconlib
joyconlib.h
[詳解]
1
14#pragma once
15#ifdef __cplusplus
16extern "C" {
17#endif
18#include <hidapi/hidapi.h>
19#include <stdint.h>
20
21typedef uint8_t u8;
22typedef uint16_t u16;
23typedef uint32_t u32;
24typedef uint64_t u64;
25typedef int8_t s8;
26typedef int16_t s16;
27typedef int32_t s32;
28typedef int64_t s64;
29
31typedef enum {
56
58typedef enum {
59 JOYCON_L = 0x1,
60 JOYCON_R = 0x2
62
63#pragma pack(push, 1)
69typedef union {
70 u8 byte[3];
71 struct {
72 u8 Y : 1;
73 u8 X : 1;
74 u8 B : 1;
75 u8 A : 1;
76 u8 SR_r : 1;
77 u8 SL_r : 1;
78 u8 R : 1;
79 u8 ZR : 1;
80 u8 Minus : 1;
81 u8 Plus : 1;
82 u8 RStick : 1;
83 u8 LStick : 1;
84 u8 Home : 1;
85 u8 Capture : 1;
86 u8 dummy : 1;
87 u8 grip : 1;
88 u8 Down : 1;
89 u8 Up : 1;
90 u8 Right : 1;
91 u8 Left : 1;
92 u8 SR_l : 1;
93 u8 SL_l : 1;
94 u8 L : 1;
95 u8 ZL : 1;
96 } btn;
98
104typedef struct {
113
121typedef struct {
123 u8 mc_num : 4;
124 u8 fc_num : 4;
126 struct {
133 } mc[7];
134 u8 unused : 4;
139#pragma pack(pop)
140
142#define JOYCON_HOMELED_OFF ((joycon_homeled*)0x11)
144#define JOYCON_HOMELED_ON ((joycon_homeled*)0x11f0f00f)
146#define JOYCON_HOMELED_BLINK ((joycon_homeled*)0x21f0f00f0f)
147
148#define JOYCON_LED_1_ON (0x01)
149#define JOYCON_LED_2_ON (0x02)
150#define JOYCON_LED_3_ON (0x04)
151#define JOYCON_LED_4_ON (0x08)
152#define JOYCON_LED_1_BLINK (0x10)
153#define JOYCON_LED_2_BLINK (0x20)
154#define JOYCON_LED_3_BLINK (0x40)
155#define JOYCON_LED_4_BLINK (0x80)
156
162typedef struct {
163 float x;
164 float y;
166
177typedef struct {
178 float acc_x;
179 float acc_y;
180 float acc_z;
181 float gyro_x;
182 float gyro_y;
183 float gyro_z;
185
191typedef struct {
192 hid_device* handle;
196 u8 rumble[4];
200 joycon_axis axis[3];
201
202 u16 stick_cal_x[3];
203 u16 stick_cal_y[3];
204 float acc_cal_coeff[3];
205 float gyro_cal_coeff[3];
206 s16 sensor_cal[3];
207
213
215#define JOYCON_NFC_TYPE_NTAG (0x02)
217#define JOYCON_NFC_TYPE_MIFARE (0x04)
218
223typedef struct {
226 u8 tag_uid[10];
228 u8 ntag_data[924];
230
232typedef enum {
236 JOYCON_IR40X30 = 40
238
240typedef struct {
246
265
274
298
309
322extern joycon_err joycon_rumble_raw(joyconlib_t* jc, int hfreq, int hamp, int lfreq, int lamp);
323
343
363
393
427extern joycon_err joycon_play_rumble(joyconlib_t* jc, char* mml, size_t sz, int (*callback)(void*), void* data);
428
441
450
478extern joycon_err joycon_read_ir(joyconlib_t* jc, u8* image, size_t size, u16 exposure, joycon_ir_result* result);
479
502
503#ifdef __cplusplus
504}
505#endif
506/*
507MIT License
508
509Copyright (c) 2022 K. Morita
510
511Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
512
513The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
514
515THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
516*/
joycon_err joycon_play_rumble(joyconlib_t *jc, char *mml, size_t sz, int(*callback)(void *), void *data)
ジョイコン振動による演奏
joycon_err joycon_read_ir(joyconlib_t *jc, u8 *image, size_t size, u16 exposure, joycon_ir_result *result)
ジョイコンでIR画像を読み取る
int64_t s64
64bit符号付き整数
Definition: joyconlib.h:28
joycon_type
ジョイコンタイプ
Definition: joyconlib.h:58
@ JOYCON_R
Definition: joyconlib.h:60
@ JOYCON_L
Definition: joyconlib.h:59
uint64_t u64
64bit符号無し整数
Definition: joyconlib.h:24
joycon_err joycon_disable_ir(joyconlib_t *jc)
ジョイコンのIRカメラの終了
joycon_err joycon_enable_ir(joyconlib_t *jc, joycon_ir_resolution resolution, u16 exposure)
ジョイコンのIRカメラの準備
joycon_err joycon_rumble(joyconlib_t *jc, int amp)
ジョイコンを振動する
joycon_err joycon_read_nfc(joyconlib_t *jc, joycon_nfc_data *nfc)
ジョイコンでNFCタグ情報を読み取る
joycon_err
エラーコード
Definition: joyconlib.h:31
@ JOYCON_ERR_INVALID_ARGUMENT
不正な引数
Definition: joyconlib.h:33
@ JOYCON_ERR_MCU_7IRSETBUSY
IR設定中エラー
Definition: joyconlib.h:51
@ JOYCON_ERR_MCU_5MCUSETBUSY
NFC/IR初期化エラー5
Definition: joyconlib.h:44
@ JOYCON_ERR_MCU_NOTAG
NFCタグ読み取りエラー
Definition: joyconlib.h:46
@ JOYCON_ERR_MCU_READ
NFC読み取りエラー
Definition: joyconlib.h:48
@ JOYCON_ERR_READ_FAILED
データ読込失敗
Definition: joyconlib.h:36
@ JOYCON_ERR_READ_NODATA
読込データ無し
Definition: joyconlib.h:38
@ JOYCON_ERR_OPEN_FAILED
オープン失敗
Definition: joyconlib.h:34
@ JOYCON_ERR_MCU_4MCUMODESET
NFC/IR初期化エラー4
Definition: joyconlib.h:43
@ JOYCON_ERR_MCU_6IRMODESET
IR設定エラー1
Definition: joyconlib.h:50
@ JOYCON_ERR_READ_TIMEOUT
データ読込タイムアウト
Definition: joyconlib.h:37
@ JOYCON_ERR_MCU_6NFCPOLL
NFC読み取り準備エラー
Definition: joyconlib.h:45
@ JOYCON_ERR_INVALID_TYPE
不正なタイプ
Definition: joyconlib.h:39
@ JOYCON_ERR_MCU_1ID31
NFC/IR初期化エラー1
Definition: joyconlib.h:40
@ JOYCON_ERR_MCU_8IRCFG
IR設定エラー2
Definition: joyconlib.h:52
@ JOYCON_ERR_MCU_NOTSUPPORTED
NFC未サポートのタグ
Definition: joyconlib.h:47
@ JOYCON_ERR_WRITE_FAILED
データ送信失敗
Definition: joyconlib.h:35
@ JOYCON_ERR_MCU_2MCUON
NFC/IR初期化エラー2
Definition: joyconlib.h:41
@ JOYCON_ERR_MCU_9IRFCFG
IR設定エラー3
Definition: joyconlib.h:53
@ JOYCON_ERR_MCU_IRNOREADY
IR未初期化
Definition: joyconlib.h:49
@ JOYCON_ERR_UNKNOWN
不明エラー
Definition: joyconlib.h:54
@ JOYCON_ERR_MCU_3MCUONBUSY
NFC/IR初期化エラー3
Definition: joyconlib.h:42
@ JOYCON_ERR_NONE
正常終了
Definition: joyconlib.h:32
joycon_err joycon_open(joyconlib_t *jc, joycon_type type)
ジョイコンを開く
joycon_err joycon_get_button_elapsed(joyconlib_t *jc, joycon_elapsed *etime)
ジョイコンの特定ボタンの経過時間を取得する
uint8_t u8
8bit符号無し整数
Definition: joyconlib.h:21
joycon_err joycon_set_homeled(joyconlib_t *jc, joycon_homeled *data)
ジョイコンhomeボタンのLEDを設定する
int8_t s8
8bit符号付き整数
Definition: joyconlib.h:25
int16_t s16
16bit符号付き整数
Definition: joyconlib.h:26
joycon_ir_resolution
IRカメラ解像度
Definition: joyconlib.h:232
@ JOYCON_IR80X60
80 x 60 ピクセル
Definition: joyconlib.h:235
@ JOYCON_IR40X30
40 x 30 ピクセル
Definition: joyconlib.h:236
@ JOYCON_IR160X120
160 x 120 ピクセル
Definition: joyconlib.h:234
@ JOYCON_IR320X240
320 x 240 ピクセル
Definition: joyconlib.h:233
uint16_t u16
16bit符号無し整数
Definition: joyconlib.h:22
joycon_err joycon_get_state(joyconlib_t *jc)
ジョイコンの状態(ボタン,スティック,6軸センサー)を取得する
joycon_err joycon_set_led(joyconlib_t *jc, u8 led)
ジョイコンのLEDを設定する
int32_t s32
32bit符号付き整数
Definition: joyconlib.h:27
joycon_err joycon_rumble_raw(joyconlib_t *jc, int hfreq, int hamp, int lfreq, int lamp)
ジョイコンを振動する
joycon_err joycon_close(joyconlib_t *jc)
ジョイコンを閉じる
uint32_t u32
32bit符号無し整数
Definition: joyconlib.h:23
6軸センサー情報
Definition: joyconlib.h:177
float gyro_x
ジャイロ値 x
Definition: joyconlib.h:181
float gyro_y
ジャイロ値 y
Definition: joyconlib.h:182
float acc_z
加速度値 z
Definition: joyconlib.h:180
float acc_y
加速度値 y
Definition: joyconlib.h:179
float gyro_z
ジャイロ値 z
Definition: joyconlib.h:183
float acc_x
加速度値 x
Definition: joyconlib.h:178
ボタンの経過時間
Definition: joyconlib.h:104
u16 ZR
ZRボタン(右)の経過時間
Definition: joyconlib.h:108
u16 Home
ホームボタン(右)の経過時間
Definition: joyconlib.h:111
u16 R
Rボタン(右)の経過時間
Definition: joyconlib.h:106
u16 ZL
ZLボタン(左)の経過時間
Definition: joyconlib.h:107
u16 SR
SRボタン(左/右)の経過時間
Definition: joyconlib.h:110
u16 L
Lボタン(左)の経過時間
Definition: joyconlib.h:105
u16 SL
SLボタン(左/右)の経過時間
Definition: joyconlib.h:109
ホームボタンのLED設定情報
Definition: joyconlib.h:121
u8 mc_num
サイクル数 Number of Mini Cycles. 1-15. If number of cycles is > 0 then x0 = x1
Definition: joyconlib.h:123
u8 intensity
LEDの明るさ初期値 LED Start Intensity. Value x0=0% - xF=100%
Definition: joyconlib.h:125
u8 mc_duration
1サイクルの基準時間 Global Mini Cycle Duration. 8ms - 175ms. Value x0 = 0ms/OFF
Definition: joyconlib.h:122
u8 mc15_intensity
サイクル15のLED明るさ
Definition: joyconlib.h:135
u8 mc2_intensity
サイクル 2,4,6,8,10,12,14 のLED明るさ
Definition: joyconlib.h:127
u8 mc15_duration
サイクル15の時間(基準時間に対する倍数) LED Duration Multiplier of Mini Cycle 15 x0 = x1 = x1
Definition: joyconlib.h:136
u8 unused
未使用
Definition: joyconlib.h:134
u8 mc1_duration
サイクル 1,3,5,7,9,11,13 の時間(基準時間に対する倍数) LED Duration Multiplier of Mini Cycle 1,3,......
Definition: joyconlib.h:129
u8 mc2_duration
サイクル 2,4,6,8,10,12,14 の時間(基準時間に対する倍数) LED Duration Multiplier of Mini Cycle 2,4,.....
Definition: joyconlib.h:131
u8 fc_num
全サイクルの繰り返し数 0で無限 Number of Full Cycles. 1-15. Value x0 is repeat forever, but if also Byte x00 High n...
Definition: joyconlib.h:124
u8 mc2_transition
前サイクルから自サイクル(2,4,6,8,10,12,14)へのフェードイン/アウト段階数(*基準時間) Fading Transition Duration to Mini Cycle 2,...
Definition: joyconlib.h:132
u8 mc1_transition
前サイクルから自サイクル(1,3,5,7,9,11,13)へのフェードイン/アウト段階数(*基準時間) Fading Transition Duration to Mini Cycle 1,...
Definition: joyconlib.h:130
u8 mc1_intensity
サイクル 1,3,5,7,9,11,13 のLED明るさ
Definition: joyconlib.h:128
u8 mc15_transition
前サイクルから自サイクル(15)へのフェードイン/アウト段階数(*基準時間) Fading Transition Duration to Mini Cycle 15 (Uses PWM)....
Definition: joyconlib.h:137
IR取得画像の情報
Definition: joyconlib.h:240
u16 noise_pixels
環境ノイズのピクセル数 Pixels with ambient noise from external light sources (sun, lighter, IR remotes,...
Definition: joyconlib.h:244
u8 avg_intensity
平均強度(0-255) Average Intensity. 0-255 scale.
Definition: joyconlib.h:241
u16 white_pixels
白(255値)ピクセルの数,最大値は65535 White pixels (pixels with 255 value). Max 65535. Uint16 constraints,...
Definition: joyconlib.h:243
u8 unknown
不明 Unknown. Shows up only when EXFilter is enabled.
Definition: joyconlib.h:242
NFCデータ
Definition: joyconlib.h:223
u8 tag_uid_size
UIDのサイズ
Definition: joyconlib.h:225
u8 ntag_data_size
NTAGデータサイズ
Definition: joyconlib.h:227
u8 tag_type
タイプ
Definition: joyconlib.h:224
スティックの位置情報
Definition: joyconlib.h:162
float y
y方向
Definition: joyconlib.h:164
float x
x方向
Definition: joyconlib.h:163
ジョイコン情報
Definition: joyconlib.h:191
joycon_stick stick
スティック
Definition: joyconlib.h:199
u8 ir_enable
IRセンサー使用中
Definition: joyconlib.h:208
u8 battery
バッテリー残量4段階
Definition: joyconlib.h:197
u8 packnum
同期用
Definition: joyconlib.h:195
u16 ir_resolution
解像度
Definition: joyconlib.h:210
hid_device * handle
ハンドル
Definition: joyconlib.h:192
u16 ir_exposure
シャッター速度
Definition: joyconlib.h:211
u8 led_bk
オープン時のLED状態
Definition: joyconlib.h:194
joycon_type type
タイプ
Definition: joyconlib.h:193
u8 ir_max_frag_no
必要領域
Definition: joyconlib.h:209
joycon_btn button
ボタン
Definition: joyconlib.h:198
ジョイコンボタン
Definition: joyconlib.h:69
u8 Down
↓ボタン(左)
Definition: joyconlib.h:88
u8 B
Bボタン(右)
Definition: joyconlib.h:74
u8 grip
チャージンググリップなどを接続すると1
Definition: joyconlib.h:87
u8 RStick
スティックのボタン(右)
Definition: joyconlib.h:82
u8 Capture
キャプチャーボタン(左)
Definition: joyconlib.h:85
u8 ZL
ZLボタン(左)
Definition: joyconlib.h:95
u8 LStick
スティックのボタン(左)
Definition: joyconlib.h:83
u8 Home
ホームボタン(右)
Definition: joyconlib.h:84
u8 L
Lボタン(左)
Definition: joyconlib.h:94
u8 Y
Yボタン(右)
Definition: joyconlib.h:72
u8 SR_l
SRボタン(左)
Definition: joyconlib.h:92
u8 R
Rボタン(右)
Definition: joyconlib.h:78
u8 ZR
ZRボタン(右)
Definition: joyconlib.h:79
u8 Right
→ボタン(左)
Definition: joyconlib.h:90
u8 Left
←ボタン(左)
Definition: joyconlib.h:91
u8 A
Aボタン(右)
Definition: joyconlib.h:75
u8 Up
↑ボタン(左)
Definition: joyconlib.h:89
u8 SL_l
SLボタン(左)
Definition: joyconlib.h:93
u8 Plus
+ボタン(右)
Definition: joyconlib.h:81
u8 Minus
-ボタン(左)
Definition: joyconlib.h:80
u8 X
Xボタン(右)
Definition: joyconlib.h:73
u8 SL_r
SLボタン(右)
Definition: joyconlib.h:77
u8 dummy
未使用
Definition: joyconlib.h:86
u8 SR_r
SRボタン(右)
Definition: joyconlib.h:76