Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
jobily
Iot
提交
9dfc3ded
I
Iot
项目概览
jobily
/
Iot
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
Iot
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
9dfc3ded
编写于
5月 18, 2023
作者:
J
John Bruner
提交者:
GitHub
5月 18, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
improve Pn532 I2C performance by reducing response buffer size (#2077)
上级
2460cd3d
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
10 addition
and
10 deletion
+10
-10
src/devices/Pn532/Pn532.cs
src/devices/Pn532/Pn532.cs
+10
-10
未找到文件。
src/devices/Pn532/Pn532.cs
浏览文件 @
9dfc3ded
...
...
@@ -26,7 +26,9 @@ namespace Iot.Device.Pn532
/// </summary>
public
class
Pn532
:
CardTransceiver
,
IDisposable
{
private
const
int
I2cMaxBuffer
=
1024
;
// Host-controller frame size
private
const
int
MaxPacketData
=
264
;
// maximum length of packet data
private
const
int
MaxPacketFraming
=
12
;
// maximum additional number of bytes for framing
// Communication way
private
const
byte
ToHostCheckSumD5
=
0xD5
;
private
const
byte
FromHostCheckSumD4
=
0xD4
;
...
...
@@ -544,7 +546,7 @@ namespace Iot.Device.Pn532
}
// TODO: check what is the real maximum size
Span
<
byte
>
listData
=
stackalloc
byte
[
1024
];
Span
<
byte
>
listData
=
stackalloc
byte
[
MaxPacketData
];
ret
=
ReadResponse
(
CommandSet
.
InListPassiveTarget
,
listData
);
_logger
.
LogDebug
(
$"
{
nameof
(
ListPassiveTarget
)}
:
{
ret
}
, number tags:
{
listData
[
0
]}
"
);
if
((
ret
>=
0
)
&&
(
listData
[
0
]
>
0
))
...
...
@@ -879,7 +881,7 @@ namespace Iot.Device.Pn532
return
null
;
}
Span
<
byte
>
receivedData
=
stackalloc
byte
[
1024
];
Span
<
byte
>
receivedData
=
stackalloc
byte
[
MaxPacketData
];
ret
=
ReadResponse
(
CommandSet
.
InAutoPoll
,
receivedData
);
_logger
.
LogDebug
(
$"
{
nameof
(
AutoPoll
)}
, success:
{
ret
}
"
);
if
(
ret
>=
0
)
...
...
@@ -925,7 +927,7 @@ namespace Iot.Device.Pn532
return
(
null
,
null
);
}
Span
<
byte
>
receivedData
=
stackalloc
byte
[
1024
];
Span
<
byte
>
receivedData
=
stackalloc
byte
[
MaxPacketData
];
ret
=
ReadResponse
(
CommandSet
.
TgInitAsTarget
,
receivedData
);
_logger
.
LogDebug
(
$"
{
nameof
(
InitAsTarget
)}
, success:
{
ret
}
"
);
if
(
ret
>=
0
)
...
...
@@ -1200,9 +1202,7 @@ namespace Iot.Device.Pn532
// For example if you write on a register that is creating an output
// So this buffer is here only to avoid having an exception when writing to
// A register that will create an output
// The maximum amount of data return if 260 but writing specific register can
// Generate a larger amount
Span
<
byte
>
returnVal
=
stackalloc
byte
[
1024
];
Span
<
byte
>
returnVal
=
stackalloc
byte
[
MaxPacketData
];
ret
=
ReadResponse
(
CommandSet
.
ReadRegister
,
returnVal
);
_logger
.
LogDebug
(
$"
{
nameof
(
WriteRegister
)}
:
{
ret
}
"
);
return
ret
>=
0
;
...
...
@@ -1998,9 +1998,9 @@ namespace Iot.Device.Pn532
}
}
// For I2C, we need to read at least 2 bytes other wise it thin
g
s we're still trying
// For I2C, we need to read at least 2 bytes other wise it thin
k
s we're still trying
// to check the status
byte
[]
preamb
=
new
byte
[
I2cMaxBuffer
];
Span
<
byte
>
preamb
=
stackalloc
byte
[
readData
.
Length
+
MaxPacketFraming
];
_i2cDevice
.
Read
(
preamb
);
int
idxPreamb
=
0
;
// Dropping the first byte, it is 0x01 and read previously in the pooling
...
...
@@ -2069,7 +2069,7 @@ namespace Iot.Device.Pn532
// Finally, we can read the data
if
(
length
-
2
>
0
)
{
preamb
.
AsSpan
().
Slice
(
idxPreamb
,
length
-
2
).
CopyTo
(
readData
);
preamb
.
Slice
(
idxPreamb
,
length
-
2
).
CopyTo
(
readData
);
idxPreamb
+=
length
-
2
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录