Skip to content

Commit fd81163

Browse files
authored
Merge pull request #29 from SPRESENSE/release-v1.5.1
Merge release-v1.5.1 into master for v1.5.1 release
2 parents fc3c76d + 01f242c commit fd81163

File tree

19 files changed

+224
-68
lines changed

19 files changed

+224
-68
lines changed

Arduino15/package_spresense_index.json

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@
1111
{
1212
"category": "SPRESENSE",
1313
"name": "Spresense Reference Board",
14-
"url": "https://github.com/sonydevworld/spresense-arduino-compatible/releases/download/v1.5.0/spresense-v1.5.0.tar.gz",
14+
"url": "https://github.com/sonydevworld/spresense-arduino-compatible/releases/download/v1.5.1/spresense-v1.5.1.tar.gz",
1515
"help": {
1616
"online": "https://github.com/sonydevworld/spresense-arduino-compatible/releases"
1717
},
1818
"version": "1.0.0",
1919
"architecture": "spresense",
20-
"archiveFileName": "spresense-v1.5.0.tar.gz",
20+
"archiveFileName": "spresense-v1.5.1.tar.gz",
2121
"boards": [
2222
{
2323
"name": "Generic Spresense Module"
@@ -49,22 +49,22 @@
4949
"name": "spresense-sdk",
5050
"systems": [
5151
{
52-
"url": "https://github.com/sonydevworld/spresense-arduino-compatible/releases/download/v1.5.0/spresense-sdk-v1.5.0.tar.gz",
52+
"url": "https://github.com/sonydevworld/spresense-arduino-compatible/releases/download/v1.5.1/spresense-sdk-v1.5.1.tar.gz",
5353
"host": "i686-mingw32",
54-
"archiveFileName": "spresense-sdk-v1.5.0.tar.gz",
54+
"archiveFileName": "spresense-sdk-v1.5.1.tar.gz",
5555
"size": "6257789"
5656
},
5757
{
5858
"_comment": "Allow x64-Linux build",
59-
"url": "https://github.com/sonydevworld/spresense-arduino-compatible/releases/download/v1.5.0/spresense-sdk-v1.5.0.tar.gz",
59+
"url": "https://github.com/sonydevworld/spresense-arduino-compatible/releases/download/v1.5.1/spresense-sdk-v1.5.1.tar.gz",
6060
"host": "x86_64-pc-linux-gnu",
61-
"archiveFileName": "spresense-sdk-v1.5.0.tar.gz",
61+
"archiveFileName": "spresense-sdk-v1.5.1.tar.gz",
6262
"size": "6257789"
6363
},
6464
{
65-
"url": "https://github.com/sonydevworld/spresense-arduino-compatible/releases/download/v1.5.0/spresense-sdk-v1.5.0.tar.gz",
65+
"url": "https://github.com/sonydevworld/spresense-arduino-compatible/releases/download/v1.5.1/spresense-sdk-v1.5.1.tar.gz",
6666
"host": "i386-apple-darwin11",
67-
"archiveFileName": "spresense-sdk-v1.5.0.tar.gz",
67+
"archiveFileName": "spresense-sdk-v1.5.1.tar.gz",
6868
"size": "6257789"
6969
}
7070
]
@@ -74,21 +74,21 @@
7474
"name": "spresense-tools",
7575
"systems": [
7676
{
77-
"url": "https://github.com/sonydevworld/spresense-arduino-compatible/releases/download/v1.5.0/spresense-tools-v1.5.0.tar.gz",
77+
"url": "https://github.com/sonydevworld/spresense-arduino-compatible/releases/download/v1.5.1/spresense-tools-v1.5.1.tar.gz",
7878
"host": "i686-mingw32",
79-
"archiveFileName": "spresense-tools-v1.5.0.tar.gz",
79+
"archiveFileName": "spresense-tools-v1.5.1.tar.gz",
8080
"size": "59294138"
8181
},
8282
{
8383
"_comment": "Allow x64-Linux build",
84-
"url": "https://github.com/sonydevworld/spresense-arduino-compatible/releases/download/v1.5.0/spresense-tools-v1.5.0.tar.gz",
84+
"url": "https://github.com/sonydevworld/spresense-arduino-compatible/releases/download/v1.5.1/spresense-tools-v1.5.1.tar.gz",
8585
"host": "x86_64-pc-linux-gnu",
86-
"archiveFileName": "spresense-tools-v1.5.0.tar.gz",
86+
"archiveFileName": "spresense-tools-v1.5.1.tar.gz",
8787
"size": "59294138"
8888
}, {
89-
"url": "https://github.com/sonydevworld/spresense-arduino-compatible/releases/download/v1.5.0/spresense-tools-v1.5.0.tar.gz",
89+
"url": "https://github.com/sonydevworld/spresense-arduino-compatible/releases/download/v1.5.1/spresense-tools-v1.5.1.tar.gz",
9090
"host": "i386-apple-darwin11",
91-
"archiveFileName": "spresense-tools-v1.5.0.tar.gz",
91+
"archiveFileName": "spresense-tools-v1.5.1.tar.gz",
9292
"size": "59294138"
9393
}
9494
]

Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/cores/spresense/wiring_analog.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
#include <unistd.h>
2828
#include <sys/ioctl.h>
2929
#include <common/up_arch.h>
30+
#include <nuttx/arch.h>
3031
#include <nuttx/config.h>
3132
#include <sdk/config.h>
3233
#include <nuttx/drivers/pwm.h>
@@ -532,6 +533,10 @@ int analogRead(uint8_t pin)
532533
printf("ERROR: Failed to start ADC\n");
533534
goto out;
534535
}
536+
537+
/* Warm up ADC */
538+
up_mdelay(1);
539+
535540
ad_pin_fd[aidx] = fd;
536541
} else {
537542
fd = ad_pin_fd[aidx];

Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/Audio/Audio.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1368,7 +1368,6 @@ err_t AudioClass::readFrames(File& myFile)
13681368
if (ret < 0)
13691369
{
13701370
print_err("ERROR: Cannot write recorded data to output file.\n");
1371-
myFile.close();
13721371
return AUDIOLIB_ECODE_FILEACCESS_ERROR;
13731372
}
13741373
}
@@ -1670,7 +1669,6 @@ err_t AudioClass::write_fifo(int fd, char *buf, uint32_t write_size, CMN_SimpleF
16701669

16711670
if(ret == 0)
16721671
{
1673-
close(fd);
16741672
return AUDIOLIB_ECODE_FILEEND;
16751673
}
16761674

@@ -1706,7 +1704,6 @@ err_t AudioClass::write_fifo(File& myFile, char *p_es_buf, uint32_t write_size,
17061704

17071705
if(ret == 0)
17081706
{
1709-
myFile.close();
17101707
return AUDIOLIB_ECODE_FILEEND;
17111708
}
17121709

Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/Audio/MediaPlayer.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,6 @@ err_t MediaPlayer::write_fifo(File& myFile, char *p_es_buf, CMN_SimpleFifoHandle
409409

410410
if(ret == 0)
411411
{
412-
myFile.close();
413412
return MEDIAPLAYER_ECODE_FILEEND;
414413
}
415414

Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/Audio/library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=Audio
2-
version=1.4.2
2+
version=1.4.3
33
author=Sony Semiconductor Solutions
44
maintainer=Sony Semiconductor Solutions
55
sentence=Spresense Audio Subsystem Library

Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/LTE/keywords.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ endPacket KEYWORD2
4444
parsePacket KEYWORD2
4545
remoteIP KEYWORD2
4646
remotePort KEYWORD2
47+
setTimeout KEYWORD2
4748

4849
#######################################
4950
# Constants (LITERAL1)

Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/LTE/library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=LTE
2-
version=1.0.0
2+
version=1.0.1
33
author=Sony Semiconductor Solutions
44
maintainer=Sony Semiconductor Solutions
55
sentence=Spresense LTE

Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/LTE/src/LTEClient.cpp

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
#include <netinet/in.h>
4040
#include <arpa/inet.h>
4141
#include <netdb.h>
42-
#include <fcntl.h>
42+
#include <sys/time.h>
4343

4444
/* To avoid multiple define in <netinet/in.h> and <IPAddress.h> */
4545
#ifdef INADDR_NONE
@@ -139,8 +139,6 @@ int LTEClient::connect(const char *host, uint16_t port)
139139
return NOT_CONNECTED;
140140
}
141141

142-
fcntl(_fd, F_SETFL, fcntl(_fd, F_GETFL) | O_NONBLOCK);
143-
144142
_buf = new uint8_t[BUFFER_MAX_LEN];
145143
if (!_buf) {
146144
LTECERR("failed to allocate memory\n");
@@ -203,7 +201,7 @@ int LTEClient::available()
203201
return NOT_AVAILABLE;
204202
}
205203

206-
len = recv(_fd, _buf, BUFFER_MAX_LEN, MSG_PEEK);
204+
len = recv(_fd, _buf, BUFFER_MAX_LEN, MSG_PEEK | MSG_DONTWAIT);
207205
if (len < 0) {
208206
if (errno != EAGAIN) {
209207
LTECERR("recv() error : %d\n", errno);
@@ -250,7 +248,7 @@ int LTEClient::read(uint8_t *buf, size_t size)
250248
return 0;
251249
}
252250

253-
len = recv(_fd, buf, size, 0);
251+
len = recv(_fd, buf, size, MSG_DONTWAIT);
254252
if (len < 0) {
255253
if (errno != EAGAIN) {
256254
LTECERR("recv() error : %d\n", errno);
@@ -277,7 +275,7 @@ int LTEClient::peek()
277275
return FAILED;
278276
}
279277

280-
len = recv(_fd, _buf, 1, MSG_PEEK);
278+
len = recv(_fd, _buf, 1, MSG_PEEK | MSG_DONTWAIT);
281279
if (len < 0) {
282280
if (errno != EAGAIN) {
283281
LTECERR("recv() error : %d\n", errno);
@@ -316,7 +314,7 @@ uint8_t LTEClient::connected()
316314
ssize_t len;
317315

318316
if (_connected) {
319-
len = recv(_fd, _buf, 0, 0);
317+
len = recv(_fd, _buf, 0, MSG_DONTWAIT);
320318
if (len < 0) {
321319
if (errno != EAGAIN) {
322320
LTECERR("recv() error : %d\n", errno);
@@ -328,3 +326,26 @@ uint8_t LTEClient::connected()
328326
return _connected;
329327
}
330328

329+
int LTEClient::setTimeout(uint32_t milliseconds)
330+
{
331+
int ret;
332+
struct timeval tv;
333+
334+
tv.tv_sec = milliseconds / 1000;
335+
tv.tv_usec = (milliseconds - (tv.tv_sec * 1000)) * 1000;
336+
ret = setsockopt(_fd, SOL_SOCKET, SO_RCVTIMEO,
337+
reinterpret_cast<const void*>(&tv),
338+
sizeof(struct timeval));
339+
if (ret < 0) {
340+
LTECERR("setsockopt(SO_RCVTIMEO) error : %d\n", errno);
341+
} else {
342+
ret = setsockopt(_fd, SOL_SOCKET, SO_SNDTIMEO,
343+
reinterpret_cast<const void*>(&tv),
344+
sizeof(struct timeval));
345+
if (ret < 0) {
346+
LTECERR("setsockopt(SO_SNDTIMEO) error : %d\n", errno);
347+
}
348+
}
349+
350+
return ret;
351+
}

Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/LTE/src/LTEClient.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,19 @@ class LTEClient : public Client
248248
return connected();
249249
};
250250

251+
/**
252+
* @brief Set the timeout when the client send or receive.
253+
*
254+
* @details [en] Set the timeout when the client send or receive. 0 means disabled (no timeout). If this method has not been called, the timeout is 0.
255+
*
256+
* @details [ja] クライアントが送受信をする際のタイムアウトを設定します。0は無効(タイムアウトしない)を意味します。本メソッドを呼び出さない場合のタイムアウトは0です
257+
*
258+
* @return [en] Returns 0 if succeeded, -1 if not.
259+
*
260+
* @return [ja] 成功した場合は0を、そうでない場合は-1を返します。
261+
*/
262+
int setTimeout(uint32_t milliseconds);
263+
251264
private:
252265
int _fd;
253266
uint8_t *_buf;

Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/LTE/src/LTETLSClient.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
#define NOT_CONNECTED 0
5454
#define CONNECTED 1
5555
#define FAILED -1
56+
#define TLS_READ_TIMEOUT 10000
5657

5758
/****************************************************************************
5859
* Public Functions
@@ -68,6 +69,7 @@ LTETLSClient::LTETLSClient()
6869
, _privateKeySize(0)
6970
, _tlsContext(NULL)
7071
, _connected(NOT_CONNECTED)
72+
, _timeout(TLS_READ_TIMEOUT)
7173
{
7274
}
7375

@@ -114,7 +116,7 @@ int LTETLSClient::connect(const char *host, uint16_t port)
114116
}
115117
tlsInit(_tlsContext);
116118

117-
ret = tlsConnect(_tlsContext, host, port, _rootCA, _rootCASize,
119+
ret = tlsConnect(_tlsContext, host, port, _timeout, _rootCA, _rootCASize,
118120
_clientCA, _clientCASize, _privateKey, _privateKeySize);
119121
if (ret < 0) {
120122
stop();
@@ -496,3 +498,10 @@ void LTETLSClient::setPrivateKey(Stream& stream, size_t size)
496498

497499
_privateKey[size] = '\0';
498500
}
501+
502+
int LTETLSClient::setTimeout(uint32_t milliseconds)
503+
{
504+
_timeout = milliseconds;
505+
506+
return 0;
507+
}

Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/LTE/src/LTETLSClient.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,19 @@ class LTETLSClient : public Client
368368
*/
369369
void setPrivateKey(Stream& stream, size_t size);
370370

371+
/**
372+
* @brief Set the timeout when the client receive (including TLS handshake).
373+
*
374+
* @details [en] Set the timeout when the client receive (including TLS handshake). 0 means disabled (no timeout). If this method has not been called, the timeout is 10 seconds.
375+
*
376+
* @details [ja] クライアントが受信をする際のタイムアウトを設定します(TLSハンドシェイクを含みます)。0は無効(タイムアウトしない)を意味します。本メソッドを呼び出さない場合のタイムアウトは10秒です。
377+
*
378+
* @return [en] Returns 0 if succeeded, -1 if not.
379+
*
380+
* @return [ja] 成功した場合は0を、そうでない場合は-1を返します。
381+
*/
382+
int setTimeout(uint32_t milliseconds);
383+
371384
private:
372385
int _peekVal;
373386
char *_rootCA;
@@ -378,6 +391,7 @@ class LTETLSClient : public Client
378391
size_t _privateKeySize;
379392
tlsClientContext_t *_tlsContext;
380393
uint8_t _connected;
394+
uint32_t _timeout;
381395
};
382396

383397
/** @} ltetlsclient */

Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/LTE/src/LTEUDP.cpp

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
#include <netinet/in.h>
4040
#include <arpa/inet.h>
4141
#include <netdb.h>
42-
#include <fcntl.h>
42+
#include <sys/time.h>
4343

4444
/* To avoid multiple define in <netinet/in.h> and <IPAddress.h> */
4545
#ifdef INADDR_NONE
@@ -226,7 +226,6 @@ uint8_t LTEUDP::begin(uint16_t port)
226226
stop();
227227
return BEGIN_FAILED;
228228
}
229-
fcntl(_fd, F_SETFL, fcntl(_fd, F_GETFL) | O_NONBLOCK);
230229

231230
return BEGIN_SUCCESS;
232231
}
@@ -292,7 +291,6 @@ int LTEUDP::beginPacket(const char *host, uint16_t port)
292291
LTEUDPERR("socket() error : %d\n", errno);
293292
return BEGIN_FAILED;
294293
}
295-
fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_NONBLOCK);
296294
}
297295

298296
if (!_wbuf) {
@@ -403,7 +401,7 @@ int LTEUDP::parsePacket()
403401
return PARSE_FAILED;
404402
}
405403

406-
len = recvfrom(_fd, buf, BUFFER_MAX_LEN, 0,
404+
len = recvfrom(_fd, buf, BUFFER_MAX_LEN, MSG_DONTWAIT,
407405
reinterpret_cast<struct sockaddr*>(&fromaddr),
408406
reinterpret_cast<socklen_t*>(&fromaddrlen));
409407
if (len < 0) {
@@ -522,3 +520,27 @@ uint16_t LTEUDP::remotePort()
522520
{
523521
return _remotePort;
524522
}
523+
524+
int LTEUDP::setTimeout(uint32_t milliseconds)
525+
{
526+
int ret;
527+
struct timeval tv;
528+
529+
tv.tv_sec = milliseconds / 1000;
530+
tv.tv_usec = (milliseconds - (tv.tv_sec * 1000)) * 1000;
531+
ret = setsockopt(_fd, SOL_SOCKET, SO_RCVTIMEO,
532+
reinterpret_cast<const void*>(&tv),
533+
sizeof(struct timeval));
534+
if (ret < 0) {
535+
LTEUDPERR("setsockopt(SO_RCVTIMEO) error : %d\n", errno);
536+
} else {
537+
ret = setsockopt(_fd, SOL_SOCKET, SO_SNDTIMEO,
538+
reinterpret_cast<const void*>(&tv),
539+
sizeof(struct timeval));
540+
if (ret < 0) {
541+
LTEUDPERR("setsockopt(SO_SNDTIMEO) error : %d\n", errno);
542+
}
543+
}
544+
545+
return ret;
546+
}

Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/LTE/src/LTEUDP.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,19 @@ class LTEUDP : public UDP
332332
*/
333333
uint16_t remotePort();
334334

335+
/**
336+
* @brief Set the timeout when send or receive.
337+
*
338+
* @details [en] Set the timeout send or receive. 0 means disabled (no timeout). If this method has not been called, the timeout is 0.
339+
*
340+
* @details [ja] 送受信をする際のタイムアウトを設定します。0は無効(タイムアウトしない)を意味します。本メソッドを呼び出さない場合のタイムアウトは0です。
341+
*
342+
* @return [en] Returns 0 if succeeded, -1 if not.
343+
*
344+
* @return [ja] 成功した場合は0を、そうでない場合は-1を返します。
345+
*/
346+
int setTimeout(uint32_t milliseconds);
347+
335348
private:
336349
int _fd;
337350
uint8_t *_wbuf;

0 commit comments

Comments
 (0)