

ytFf[^擾֐Q



y0. Tvz

s0.1 Rg[f[^̎擾t

foCXf[^̎擾
	foCXf[^擾ɂ́A֐pdGetPeripheral()gp܂B

	Ď擾\̂̃oQƂ邾ŁAeՂɃRg[
	͂𓾂邱Ƃł܂B


y1. f[^dlz

s1.1 \̎dlt

PDS_PERIPHERAL	\
`	typedef struct {
	Uint32 id;
	Uint32 support;
	Uint32 on;
	Uint32 off;
	Uint32 press;
	Uint32 release;
	Uint16 r;
	Uint16 l;
	Sint16 x1;
	Sint16 y1;
	Sint16 x2;
	Sint16 y2;
	Sint8* name;
	void* extend;
	Uint32 old;
} PDS_PERIPHERAL;
	Rg[pbh̏Ԃi[\̂łB

o
id       foCXID
support  {^Eo[̃T|[g
on       fW^{^
off      fW^{^(])
press    fW^{^_EGbW
release  fW^{^AbvGbW
r        AiOR̒l(0`255)
l        AiOL̒l(0`255)
x1       AiOX1̒l(-128`127)
y1       AiOY1̒l(-128`127)
x2       AiOX2̒l(-128`127)
y2       AiOY2̒l(-128`127)
name     foCX
extend   gf[^AhX(gp)
old	 \

Q	pdGetPeripheral()

s1.2 foCXIDƃfoCX́t

	擾\̂ɂ́AfoCX̎ʂ\IDƁÂ̖i[Ă܂B
Maple Busdlł͎擾łfoCXID͕GȃtH[}bgɂȂĂ邽߁A
AvP[V舵ɂ͕słB
{Cuł͂ȗAȉ̂悤ɒ`܂B

+----------------------+--------------------+------------------------------+
| foCX             |foCXID (id)     |foCX̕ (name)     |
+----------------------+--------------------+------------------------------+
|WRg[pbh|PDD_DEV_CONTROLLER  |foCX̂i      |
+----------------------+--------------------+------------------------------+


s1.3 foCX̃T|[g{^t

	Rg[nfoCXɂ́A܂܂ȃfoCX݂܂B
\L[2́AAiO2`l̂̂ȂǁAfoCXƂ
LĂ{^Eo[قȂ܂B𒲂ׂɂ̓ousupportv
QƂ܂Bȉ̕\ɂărbgATC܂ĂA
{^Eo[ꍇ1AȂꍇ0i[Ă܂B
	Rg[nfoCX́A\L[AAX^[g{^AA{^A
B{^ƂK{ƂȂĂ邽߁Ã{^݂̂gpăAvP[VgނƂɂA݊ێ邱Ƃł܂B

+--------------+--------------------+
|{^Eo[|rbgʒuwp萔|
+--------------+--------------------+
|\L[A   |PDD_DEV_SUPPORT_KU  |
+--------------+--------------------+
|\L[A   |PDD_DEV_SUPPORT_KD  |
+--------------+--------------------+
|\L[A   |PDD_DEV_SUPPORT_KL  |
+--------------+--------------------+
|\L[AE   |PDD_DEV_SUPPORT_KR  |
+--------------+--------------------+
|\L[B   |PDD_DEV_SUPPORT_KUB |
+--------------+--------------------+
|\L[B   |PDD_DEV_SUPPORT_KDB |
+--------------+--------------------+
|\L[B   |PDD_DEV_SUPPORT_KLB |
+--------------+--------------------+
|\L[BE   |PDD_DEV_SUPPORT_KRB |
+--------------+--------------------+
|X^[g{^|PDD_DEV_SUPPORT_ST  |
+--------------+--------------------+
|A{^       |PDD_DEV_SUPPORT_TA  |
+--------------+--------------------+
|B{^       |PDD_DEV_SUPPORT_TB  |
+--------------+--------------------+
|C{^       |PDD_DEV_SUPPORT_TC  |
+--------------+--------------------+
|X{^       |PDD_DEV_SUPPORT_TX  |
+--------------+--------------------+
|Y{^       |PDD_DEV_SUPPORT_TY  |
+--------------+--------------------+
|Z{^       |PDD_DEV_SUPPORT_TZ  |
+--------------+--------------------+
|D{^       |PDD_DEV_SUPPORT_TD  |
+--------------+--------------------+
|AiOR   |PDD_DEV_SUPPORT_AR  |
+--------------+--------------------+
|AiOL   |PDD_DEV_SUPPORT_AL  |
+--------------+--------------------+
|AiOX1  |PDD_DEV_SUPPORT_AX1 |
+--------------+--------------------+
|AiOY1  |PDD_DEV_SUPPORT_AY1 |
+--------------+--------------------+
|AiOX2  |PDD_DEV_SUPPORT_AX2 |
+--------------+--------------------+
|AiOY2  |PDD_DEV_SUPPORT_AY2 |
+--------------+--------------------+
AvP[V́AfoCXIDƃfoCX̎dlQƂ邩A
邢͂̃{^Eo[T|[gQƂAK؂Ƀf[^
舵ĂB

 
s1.3.1 fW^{^f[^t

	fW^{^́AoonAoffApressArelease4
oɊi[ĂAprɂĎg܂BeõrbgƂ
{^UĂA{^Ă1AĂȂ
0ƂȂ܂(_)B܂A_Ԃ͏֐pdInitPeripheral()
Ăяoɕ_ɐݒ肷邱Ƃł܂B

+--------------+--------------------+
|fW^{^|rbgʒuwp萔|
+--------------+--------------------+
|\L[A   |PDD_DGT_KU          |
+--------------+--------------------+
|\L[A   |PDD_DGT_KD          |
+--------------+--------------------+
|\L[A   |PDD_DGT_KL          |
+--------------+--------------------+
|\L[AE   |PDD_DGT_KR          |
+--------------+--------------------+
|A{^       |PDD_DGT_TA          |
+--------------+--------------------+
|B{^       |PDD_DGT_TB          |
+--------------+--------------------+
|C{^       |PDD_DGT_TC          |
+--------------+--------------------+
|D{^       |PDD_DGT_TD          |
+--------------+--------------------+
|X{^       |PDD_DGT_TX          |
+--------------+--------------------+
|Y{^       |PDD_DGT_TY          |
+--------------+--------------------+
|Z{^       |PDD_DGT_TZ          |
+--------------+--------------------+
|L{^       |PDD_DGT_TL          |
+--------------+--------------------+
|R{^       |PDD_DGT_TR          |
+--------------+--------------------+
|X^[g{^|PDD_DGT_ST          |
+--------------+--------------------+
|\L[B   |PDD_DGT_KUB         |
+--------------+--------------------+
|\L[B   |PDD_DGT_KDB         |
+--------------+--------------------+
|\L[B   |PDD_DGT_KLB         |
+--------------+--------------------+
|\L[BE   |PDD_DGT_KRB         |
+--------------+--------------------+


+----------------+------------------------------------------------------+
|o          |Ӗ                                                  |
+----------------+------------------------------------------------------+
|Uint32 on       |{^ĂƂ({^_E)AΉrbg|
|                |1ɂȂ܂BĂȂ{^̃rbg0      |
|                |Ȃ܂B                                            |
+----------------+------------------------------------------------------+
|Uint32 off      |onorbg]̂łBȂ킿A{^  |
|                |ĂȂƂ({^Abv)AΉrbg    |
|                |1ɂȂ܂B                                         |
+----------------+------------------------------------------------------+
|Uint32 press    |{^ĂȂԂAꂽԂɕω    |
|                |Ƃ({^_EGbW)AΉrbg1     |
|                |Ȃ܂BłȂrbg0ɂȂ܂B             |
+----------------+------------------------------------------------------+
|Uint32 release  |{^ĂԂAĂȂԂɕω|
|                |Ƃ({^AbvGbW)AΉrbg1     |
|                |Ȃ܂BłȂrbg0ɂȂ܂B             |
+----------------+------------------------------------------------------+
_ɐݒ肵ꍇAbuttonAonAoffApressAreleasêׂẴrbg
  ]Ċi[܂B

ȂAfW^LR{^́AAiOLR񂩂\tgEFAŋ[I
Ă܂BAiOLR{^ȂfoCX̏ꍇArbg
ω܂̂ŒӂĂB(fW^LR{^𕨗IɎ
foCX͂܂)


s1.3.2 AiOf[^t

	AiÓAor,l,x1,y1,x2,y26̃o
i[Ă܂BڑAт̃{^Ao[ȂfoCX
ꍇ́AZ^[ʒuƓf[^i[܂B
+---------+--------+------------+------------+----------------+
|o   |    |W      |Z^[ʒu|o[/{^   |
+---------+--------+------------+------------+----------------+
|Uint16 r |Ȃ|0`255      |          0 |AiOR{^ |
+---------+--------+------------+------------+----------------+
|Uint16 l |Ȃ|0`255      |          0 |AiOL{^ |
+---------+--------+------------+------------+----------------+
|Sint16 x1|t|-128`0`127|          0 |AiOo[X1|
+---------+--------+------------+------------+----------------+
|Sint16 y1|t|-128`0`127|          0 |AiOo[Y1|
+---------+--------+------------+------------+----------------+
|Sint16 x2|t|-128`0`127|          0 |AiOo[X2|
+---------+--------+------------+------------+----------------+
|Sint16 y2|t|-128`0`127|          0 |AiOo[Y2|
+---------+--------+------------+------------+----------------+



s1.4 f[^擾̃G[t

	Maple BusvgRɂfoCXƂ̒ʐMɁA炩̃G[
ꍇ܂B̏ꍇA{^̐ȃf[^Ȃ߁A
\͉̂̕\̂悤Ȓlɐݒ肳܂B

+--------------+--------------------------------+
|o        |ݒl                          |
+--------------+--------------------------------+
|id,name,extend|O̒l                        |
+--------------+--------------------------------+
|fW^{^|ׂă{^ĂȂ|
+--------------+--------------------------------+
|AiO    |Z^[ʒu                    |
+--------------+--------------------------------+

G[ǂ́A֐pdGetPeripheralError()Œׂ邱Ƃł܂B

+---------------+----------------------------------------+
|G[R[h   |e                                    |
+---------------+----------------------------------------+
|PDD_ERR_OK     |G[Ȃ                              |
+---------------+----------------------------------------+
|PDD_ERR_RETRY  |{^f[^Ɏ擾ł܂ł|
+---------------+----------------------------------------+
|PDD_ERR_GENERIC|`G[                            |
+---------------+----------------------------------------+
G[ꍇ́ACuł͉񕜎i݂܂BAvP[VœK؂ȏsĂB



y2. ֐dlz

s2.1֐ꗗt
+----------------------+------------------------------------+
|֐                  |@\                                |
+----------------------+------------------------------------+
|pdGetPeripheral       |Rg[̃{^Ԃ擾  |
+----------------------+------------------------------------+
|pdGetPeripheralError  |Rg[ɊւG[擾|
+----------------------+------------------------------------+
|pdExecPeripheralServer|ytFf[^擾T[o֐    |
+----------------------+------------------------------------+


s2.2 ֐APIt
m֐nconst PDS_PERIPHERAL* pdGetPeripheral(Uint32 port)
ḿnport	|[gԍ(PDD_PORT_A0/B0/C0/D0)
mónȂ
m߂lnPDS_PERIPHERAL\̂̃AhX
m@\nytFf[^擾܂B
mQƁnPDS_PERIPHERAL\
mgpn
          const PDS_PERIPHERAL* per;

          per = pdGetPeripheral(PDD_PORT_A0);

          if (per->press & PDD_DGT_ST) {
            /* X^[g{^ꂽ */
                  :
                  :
          }
