Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: libserialport libxml2
Diff: scan.c
- Revision:
- 3:d147beabba0e
- Parent:
- 2:9eb0a9a1f958
diff -r 9eb0a9a1f958 -r d147beabba0e scan.c --- a/scan.c Tue Sep 20 15:34:31 2016 +0000 +++ b/scan.c Mon Jan 30 13:00:39 2017 +0000 @@ -105,7 +105,10 @@ info = realloc(scan_result->info, (new_size + 1) * sizeof(*info)); if (!info) - goto err_free_info_list; + return NULL; + + scan_result->info = info; + scan_result->size = new_size; for (i = old_size; i < new_size; i++) { /* Make sure iio_context_info_list_free won't overflow */ @@ -113,18 +116,10 @@ info[i] = zalloc(sizeof(**info)); if (!info[i]) - goto err_free_info_list; + return NULL; } - scan_result->info = info; - scan_result->size = new_size; - return &info[old_size]; - -err_free_info_list: - scan_result->size = 0; - iio_context_info_list_free(scan_result->info); - return NULL; } struct iio_scan_context * iio_create_scan_context( @@ -163,4 +158,58 @@ #endif free(ctx); } + +#ifdef WITH_MATLAB_BINDINGS_API + +struct iio_scan_block { + struct iio_scan_context *ctx; + struct iio_context_info **info; + ssize_t ctx_cnt; +}; + +ssize_t iio_scan_block_scan(struct iio_scan_block *blk) +{ + iio_context_info_list_free(blk->info); + blk->info = NULL; + blk->ctx_cnt = iio_scan_context_get_info_list(blk->ctx, &blk->info); + return blk->ctx_cnt; +} + +struct iio_context_info *iio_scan_block_get_info( + struct iio_scan_block *blk, unsigned int index) +{ + if (!blk->info || (ssize_t)index >= blk->ctx_cnt) { + errno = EINVAL; + return NULL; + } + return blk->info[index]; +} + +struct iio_scan_block *iio_create_scan_block( + const char *backend, unsigned int flags) +{ + struct iio_scan_block *blk; + + blk = calloc(1, sizeof(*blk)); + if (!blk) { + errno = ENOMEM; + return NULL; + } + + blk->ctx = iio_create_scan_context(backend, flags); + if (!blk->ctx) { + free(blk); + return NULL; + } + + return blk; +} + +void iio_scan_block_destroy(struct iio_scan_block *blk) +{ + iio_context_info_list_free(blk->info); + iio_scan_context_destroy(blk->ctx); + free(blk); +} +#endif