diff --git a/file_demo_bios/da830/components/sysbf.c b/file_demo_bios/da830/components/sysbf.c
--- /dev/null
@@ -0,0 +1,111 @@
+/*=================================================================\r
+ * sysbf.c: BF creation routines.\r
+ *=================================================================*/\r
+\r
+#include <xdc/std.h>\r
+#include <ti/sysbios/BIOS.h>\r
+#include <xdc/runtime/System.h>\r
+\r
+#include <ti/mas/types/types.h>\r
+#include <ti/mas/util/ecomem.h>\r
+#include <ti/mas/aer/bf.h>\r
+\r
+#include "sysbfflt.h"\r
+#include "sys.h"\r
+\r
+bfSizeConfig_t bfSizeConfig = {\r
+ bf_SAMP_RATE_16K, /* 16kHz sampling rate */\r
+ SYS_MICS_MAX, /* Maximum number of mics in the system */\r
+ 32, /* Maximum beamformer filter length */\r
+ bf_TYPE_FIXED /* Fixed beamformer type */\r
+};\r
+\r
+bfConfig_t bfConfig = {\r
+ bf_SAMP_RATE_16K, /* use 16kHz sampling rate */\r
+ SYS_MICS_MAX, /* use all mics */\r
+};\r
+\r
+/*=================================================================\r
+ * void sysBfCreate(void) Create beamformers\r
+ *=================================================================*/\r
+void sysBfCreate(void)\r
+{\r
+ int k, n, err;\r
+ tint nbufs;\r
+ Fract *coeff_p;\r
+ const ecomemBuffer_t *bufs;\r
+ bfNewConfig_t bfNewConfig;\r
+ bfControl_t bfCtl;\r
+\r
+ System_printf("...Initializing beamformers\n");\r
+ System_flush();\r
+\r
+ /* Configure Beamformers (use same configuration for all) */\r
+ err = bfGetSizes(&nbufs, &bufs, &bfSizeConfig);\r
+ if (err != bf_NOERR) {\r
+ System_printf("*** beamformer getsizes error: %d\n", err);\r
+ BIOS_exit(0);\r
+ }\r
+ /* Allocate memory for beamformer */\r
+ if (nbufs > SYS_COMP_MAXBUFS) {\r
+ System_printf("*** not enough buffer descriptors");\r
+ BIOS_exit(0);\r
+ }\r
+\r
+ bfNewConfig.sizeCfg = bfSizeConfig; /* Use same configuration for all */\r
+ for (k = 0; k < sysContext.nvmics; k++) {\r
+ err = sysHeapAllocAll(nbufs, sysCompBufs, (const void*)bufs);\r
+ SYS_CHECK_ERROR(err);\r
+ \r
+ /* Give memory to beamformer #k */\r
+ bfNewConfig.handle = (void*)k; /* Indicate BF instance #k */\r
+ sysContext.bfInst_p[k] = NULL;\r
+ err = bfNew(&sysContext.bfInst_p[k], nbufs, sysCompBufs, &bfNewConfig);\r
+ if (err != bf_NOERR) {\r
+ System_printf("*** beamformer #%d new error: %d\n", k, err);\r
+ BIOS_exit(0);\r
+ }\r
+ }\r
+\r
+ /* Open BF for business */\r
+ for (k = 0; k < sysContext.nvmics; k++) {\r
+ err = bfOpen(sysContext.bfInst_p[k],&bfConfig);\r
+ if (err != bf_NOERR) {\r
+ System_printf("*** beamformer #%d open error: %d\n", k, err);\r
+ BIOS_exit(0);\r
+ }\r
+ }\r
+ /* At this point BF's are open, but DISABLED! */\r
+ /* We need to initialize filters prior to enabling them. */\r
+\r
+ for (k = 0; k < sysContext.nvmics; k++) {\r
+ coeff_p = sysBfFilters[sysContext.vmicangles[k]];\r
+ for (n = 0; n < sysContext.nmics; n++) {\r
+ err = bfPutFilter (sysContext.bfInst_p[k], coeff_p, bf_FG_BF, n, SYS_BF_FILTER_LENGTH);\r
+ if (err != bf_NOERR) {\r
+ System_printf("*** beamformer #%d put-filter error: %d\n", k, err);\r
+ BIOS_exit(0);\r
+ }\r
+ coeff_p += SYS_BF_FILTER_LENGTH; /* point to the filter for next mic */\r
+ }\r
+ }\r
+\r
+ /* Now we can enable beamformers */\r
+ bfCtl.valid_bitfield = bf_CTL_CONFIG;\r
+ bfCtl.config.mask = bf_CTL_CFG_ENABLE;\r
+ bfCtl.config.value = bf_ENABLE;\r
+ for (k = 0; k < sysContext.nvmics; k++) {\r
+ err = bfControl (sysContext.bfInst_p[k], &bfCtl);\r
+ if (err != bf_NOERR) {\r
+ System_printf("*** beamformer #%d control error: %d\n", k, err);\r
+ BIOS_exit(0);\r
+ }\r
+ }\r
+\r
+ System_printf("Done with beamformers\n");\r
+ System_flush();\r
+\r
+} /* sysBfCreate */\r
+\r
+/* nothing past this point */\r
+\r