@@ -252,75 +252,72 @@ void Notecard::begin(NoteSerial * noteSerial_)
252
252
253
253
/* *************************************************************************/
254
254
/* !
255
- @brief Set the debug output source.
256
- A NoteLog object will be constructed via `make_note_log()`
257
- using a platform specific logging channel (for example, `Serial`
258
- on Arduino). The specified channel will be configured as the
259
- source for debug messages provided to `notecard.logDebug()`.
260
- @param noteLog
261
- A platform specific log implementation to be used for
262
- debug output.
255
+ @brief Clear the debug output source.
263
256
*/
264
257
/* *************************************************************************/
265
- void Notecard::setDebugOutputStream (NoteLog * noteLog_ )
258
+ void Notecard::clearDebugOutputStream ( void )
266
259
{
267
- noteLog = noteLog_;
268
- if (noteLog) {
269
- NoteSetFnDebugOutput (noteLogPrint);
270
- } else {
271
- NoteSetFnDebugOutput (nullptr );
272
- }
260
+ noteLog = nullptr ;
261
+ NoteSetFnDebugOutput (nullptr );
273
262
}
274
263
275
264
/* *************************************************************************/
276
265
/* !
277
- @brief Clear the debug output source.
266
+ @brief Periodically show Notecard sync status, returning `TRUE`
267
+ if something was displayed to the debug stream.
268
+ @param pollFrequencyMs
269
+ The frequency to poll the Notecard for sync status.
270
+ @param maxLevel
271
+ The maximum log level to output to the debug console. Pass
272
+ -1 for all.
273
+ @return `True` if a pending response was displayed to the debug stream.
278
274
*/
279
275
/* *************************************************************************/
280
- void Notecard::clearDebugOutputStream ( void )
276
+ bool Notecard::debugSyncStatus ( int pollFrequencyMs, int maxLevel )
281
277
{
282
- noteLog = nullptr ;
283
- NoteSetFnDebugOutput (nullptr );
278
+ return NoteDebugSyncStatus (pollFrequencyMs, maxLevel);
284
279
}
285
280
286
281
/* *************************************************************************/
287
282
/* !
288
- @brief Set the transaction pins.
289
- A NoteTxn object will be constructed via `make_note_txn()`
290
- using a platform specific tuple of digital I/O pins. The
291
- pins are used to send a request to transact and a listen
292
- for the clear to transact signal. Transaction pins are not
293
- necessary on any legacy Notecards, and are only necessary
294
- for certain Notecard SKUs. The pins allow the Notecard to
295
- inform the host it has had time to awaken from deep sleep
296
- and is ready to process commands.
297
- @param noteTxn
298
- A platform specific tuple of digital I/O pins.
283
+ @brief Deletes a `J` JSON response object from memory.
284
+ @param rsp
285
+ A `J` JSON response object.
299
286
*/
300
287
/* *************************************************************************/
301
- void Notecard::setTransactionPins (NoteTxn * noteTxn_) {
302
- noteTxn = noteTxn_; // Set global interface
303
- if (noteTxn_) {
304
- NoteSetFnTransaction (noteTransactionStart, noteTransactionStop);
305
- } else {
306
- make_note_txn (nullptr ); // Clear singleton
307
- NoteSetFnTransaction (nullptr , nullptr );
308
- }
288
+ void Notecard::deleteResponse (J *rsp)
289
+ {
290
+ NoteDeleteResponse (rsp);
309
291
}
310
292
311
293
/* *************************************************************************/
312
294
/* !
313
- @brief Creates a new request object for population by the host.
314
- This function accepts a request string (for example, `"note.add"`)
315
- and initializes a JSON Object to return to the host.
316
- @param request
317
- The request name, for example, `note.add`.
318
- @return A `J` JSON Object populated with the request name.
295
+ @brief Write a message to the serial debug stream.
296
+ @param message
297
+ A string to log to the serial debug stream.
319
298
*/
320
299
/* *************************************************************************/
321
- J * Notecard::newRequest (const char *request )
300
+ void Notecard::logDebug (const char *message )
322
301
{
323
- return NoteNewRequest (request);
302
+ NoteDebug (message);
303
+ }
304
+
305
+ /* *************************************************************************/
306
+ /* !
307
+ @brief Write a formatted message to the serial debug stream.
308
+ @param format
309
+ A format string to log to the serial debug stream.
310
+ @param ... one or more values to interpolate into the format string.
311
+ */
312
+ /* *************************************************************************/
313
+ void Notecard::logDebugf (const char *format, ...)
314
+ {
315
+ char message[256 ];
316
+ va_list args;
317
+ va_start (args, format);
318
+ vsnprintf (message, sizeof (message), format, args);
319
+ va_end (args);
320
+ NoteDebug (message);
324
321
}
325
322
326
323
/* *************************************************************************/
@@ -340,35 +337,17 @@ J *Notecard::newCommand(const char *request)
340
337
341
338
/* *************************************************************************/
342
339
/* !
343
- @brief Sends a request to the Notecard.
344
- This function takes a populated `J` JSON request object
345
- and sends it to the Notecard.
346
- @param req
347
- A `J` JSON request object.
348
- @return `True` if the message was successfully sent to the Notecard,
349
- `False` if there was an error.
350
- */
351
- /* *************************************************************************/
352
- bool Notecard::sendRequest (J *req)
353
- {
354
- return NoteRequest (req);
355
- }
356
-
357
- /* *************************************************************************/
358
- /* !
359
- @brief Sends a request to the Notecard, retrying it on failure until the
360
- provided timeout interval lapses.
361
- @param req
362
- A `J` JSON request object.
363
- @param timeoutSeconds
364
- The timeout interval, in seconds.
365
- @return `True` if the message was successfully sent to the Notecard,
366
- `False` if the message couldn't be sent.
340
+ @brief Creates a new request object for population by the host.
341
+ This function accepts a request string (for example, `"note.add"`)
342
+ and initializes a JSON Object to return to the host.
343
+ @param request
344
+ The request name, for example, `note.add`.
345
+ @return A `J` JSON Object populated with the request name.
367
346
*/
368
347
/* *************************************************************************/
369
- bool Notecard::sendRequestWithRetry (J *req, uint32_t timeoutSeconds )
348
+ J * Notecard::newRequest ( const char *request )
370
349
{
371
- return NoteRequestWithRetry (req, timeoutSeconds );
350
+ return NoteNewRequest (request );
372
351
}
373
352
374
353
/* *************************************************************************/
@@ -404,72 +383,126 @@ J *Notecard::requestAndResponseWithRetry(J *req, uint32_t timeoutSeconds)
404
383
405
384
/* *************************************************************************/
406
385
/* !
407
- @brief Deletes a `J` JSON response object from memory .
386
+ @brief Determines if there is an error string present in a response object .
408
387
@param rsp
409
- A `J` JSON response object.
388
+ A `J` JSON Response object.
389
+ @return `true` if the response object contains an error.
410
390
*/
411
391
/* *************************************************************************/
412
- void Notecard::deleteResponse (J *rsp)
392
+ bool Notecard::responseError (J *rsp)
413
393
{
414
- NoteDeleteResponse (rsp);
394
+ return NoteResponseError (rsp);
415
395
}
416
396
417
397
/* *************************************************************************/
418
398
/* !
419
- @brief Write a message to the serial debug stream.
420
- @param message
421
- A string to log to the serial debug stream.
399
+ @brief Sends a request to the Notecard.
400
+ This function takes a populated `J` JSON request object
401
+ and sends it to the Notecard.
402
+ @param req
403
+ A `J` JSON request object.
404
+ @return `True` if the message was successfully sent to the Notecard,
405
+ `False` if there was an error.
422
406
*/
423
407
/* *************************************************************************/
424
- void Notecard::logDebug ( const char *message )
408
+ bool Notecard::sendRequest (J *req )
425
409
{
426
- NoteDebug (message );
410
+ return NoteRequest (req );
427
411
}
428
412
429
413
/* *************************************************************************/
430
414
/* !
431
- @brief Write a formatted message to the serial debug stream.
432
- @param format
433
- A format string to log to the serial debug stream.
434
- @param ... one or more values to interpolate into the format string.
415
+ @brief Sends a request to the Notecard, retrying it on failure until the
416
+ provided timeout interval lapses.
417
+ @param req
418
+ A `J` JSON request object.
419
+ @param timeoutSeconds
420
+ The timeout interval, in seconds.
421
+ @return `True` if the message was successfully sent to the Notecard,
422
+ `False` if the message couldn't be sent.
435
423
*/
436
424
/* *************************************************************************/
437
- void Notecard::logDebugf ( const char *format, ... )
425
+ bool Notecard::sendRequestWithRetry (J *req, uint32_t timeoutSeconds )
438
426
{
439
- char message[256 ];
440
- va_list args;
441
- va_start (args, format);
442
- vsnprintf (message, sizeof (message), format, args);
443
- va_end (args);
444
- NoteDebug (message);
427
+ return NoteRequestWithRetry (req, timeoutSeconds);
445
428
}
446
429
447
430
/* *************************************************************************/
448
431
/* !
449
- @brief Periodically show Notecard sync status, returning `TRUE`
450
- if something was displayed to the debug stream.
451
- @param pollFrequencyMs
452
- The frequency to poll the Notecard for sync status.
453
- @param maxLevel
454
- The maximum log level to output to the debug console. Pass
455
- -1 for all.
456
- @return `True` if a pending response was displayed to the debug stream .
432
+ @brief Set the debug output source.
433
+ A NoteLog object will be constructed via `make_note_log()`
434
+ using a platform specific logging channel (for example, `Serial`
435
+ on Arduino). The specified channel will be configured as the
436
+ source for debug messages provided to `notecard.logDebug()`.
437
+ @param noteLog
438
+ A platform specific log implementation to be used for
439
+ debug output .
457
440
*/
458
441
/* *************************************************************************/
459
- bool Notecard::debugSyncStatus ( int pollFrequencyMs, int maxLevel )
442
+ void Notecard::setDebugOutputStream (NoteLog * noteLog_ )
460
443
{
461
- return NoteDebugSyncStatus (pollFrequencyMs, maxLevel);
444
+ noteLog = noteLog_;
445
+ if (noteLog) {
446
+ NoteSetFnDebugOutput (noteLogPrint);
447
+ } else {
448
+ NoteSetFnDebugOutput (nullptr );
449
+ }
462
450
}
463
451
464
452
/* *************************************************************************/
465
453
/* !
466
- @brief Determines if there is an error string present in a response object.
467
- @param rsp
468
- A `J` JSON Response object.
469
- @return `True` if the response object contains an error.
454
+ @brief Set the lock/unlock functions the Notecard uses for I2C access.
455
+ @param lockI2cFn
456
+ A user-defined callback that blocks until access to the I2C
457
+ bus has become available, then returns with ownership of the
458
+ I2C bus.
459
+ @param unlockI2cFn
460
+ A user-defined callback that releases ownership of the
461
+ I2C bus taken during the call to `lockI2cFn()`.
470
462
*/
471
463
/* *************************************************************************/
472
- bool Notecard::responseError (J *rsp)
473
- {
474
- return NoteResponseError (rsp);
464
+ void Notecard::setFnI2cMutex (mutexFn lockI2cFn_, mutexFn unlockI2cFn_) {
465
+ NoteSetFnI2CMutex (lockI2cFn_, unlockI2cFn_);
466
+ }
467
+
468
+ /* *************************************************************************/
469
+ /* !
470
+ @brief Set the lock/unlock functions the host MCU uses to ensure
471
+ a complete transaction with the Notecard.
472
+ @param lockNoteFn
473
+ A user-defined callback that blocks until the Notecard has
474
+ completed any previous transactions, then returns with
475
+ ownership of the next Notecard transaction.
476
+ @param unlockNoteFn
477
+ A user-defined callback that releases ownership of the
478
+ Notecard transaction taken during the call to `lockNoteFn()`.
479
+ */
480
+ /* *************************************************************************/
481
+ void Notecard::setFnNoteMutex (mutexFn lockNoteFn_, mutexFn unlockNoteFn_) {
482
+ NoteSetFnNoteMutex (lockNoteFn_, unlockNoteFn_);
483
+ }
484
+
485
+ /* *************************************************************************/
486
+ /* !
487
+ @brief Set the transaction pins.
488
+ A NoteTxn object will be constructed via `make_note_txn()`
489
+ using a platform specific tuple of digital I/O pins. The
490
+ pins are used to send a request to transact and to listen
491
+ for the clear to transact signal. Transaction pins are not
492
+ necessary on any legacy Notecards, and are only necessary
493
+ for certain Notecard SKUs. The pins allow the Notecard to
494
+ inform the host it has had time to awaken from deep sleep
495
+ and is ready to process commands.
496
+ @param noteTxn
497
+ A platform specific tuple of digital I/O pins.
498
+ */
499
+ /* *************************************************************************/
500
+ void Notecard::setTransactionPins (NoteTxn * noteTxn_) {
501
+ noteTxn = noteTxn_; // Set global interface
502
+ if (noteTxn_) {
503
+ NoteSetFnTransaction (noteTransactionStart, noteTransactionStop);
504
+ } else {
505
+ make_note_txn (nullptr ); // Clear singleton
506
+ NoteSetFnTransaction (nullptr , nullptr );
507
+ }
475
508
}
0 commit comments