The main objective is to reduce loss in revenue due to delayed shelf-restocking (when product is in-stock in the store but not stocked on the shelf) and inaccurate forecasting (under-estimating future product sales) practices. The result is to demonstrate inventory automation using ECIS system by enabling the means to monitor and track store inventory in real-time, perform data analysis remotely in cloud, improve shopping experience for the consumers and increase revenue for the retailers in the retail industry. Machine Learning code can be found on my GitHub: https://github.com/priyankkalgaonkar

Dependencies:   mbed

ECE 53301: Wireless and Multimedia Computing Final Project Report – Group 1

Inventory Automation Using Electronically Connected Intelligent Shelves.

Code Developed by: Priyank Kalgaonkar.

Department of Electrical and Computer Engineering, Purdue School of Engineering and Technology at IUPUI.

Submitted as partial fulfillment for the requirement of Fall 2019 - ECE 53301-26877: Wireless and Multimedia Computing course.

Date of Submission: December 12, 2019.

Committer:
priyank12p
Date:
Thu Dec 12 01:27:12 2019 +0000
Revision:
1:45dc700211a7
Parent:
0:b0c4c25d37ab
Minor changes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
priyank12p 0:b0c4c25d37ab 1 /* ----------------------------------------------------------------------
priyank12p 0:b0c4c25d37ab 2 * Copyright (C) 2010-2014 ARM Limited. All rights reserved.
priyank12p 0:b0c4c25d37ab 3 *
priyank12p 0:b0c4c25d37ab 4 * $Date: 19. March 2015
priyank12p 0:b0c4c25d37ab 5 * $Revision: V.1.4.5
priyank12p 0:b0c4c25d37ab 6 *
priyank12p 0:b0c4c25d37ab 7 * Project: CMSIS DSP Library
priyank12p 0:b0c4c25d37ab 8 * Title: arm_common_tables.h
priyank12p 0:b0c4c25d37ab 9 *
priyank12p 0:b0c4c25d37ab 10 * Description: This file has extern declaration for common tables like Bitreverse, reciprocal etc which are used across different functions
priyank12p 0:b0c4c25d37ab 11 *
priyank12p 0:b0c4c25d37ab 12 * Target Processor: Cortex-M4/Cortex-M3
priyank12p 0:b0c4c25d37ab 13 *
priyank12p 0:b0c4c25d37ab 14 * Redistribution and use in source and binary forms, with or without
priyank12p 0:b0c4c25d37ab 15 * modification, are permitted provided that the following conditions
priyank12p 0:b0c4c25d37ab 16 * are met:
priyank12p 0:b0c4c25d37ab 17 * - Redistributions of source code must retain the above copyright
priyank12p 0:b0c4c25d37ab 18 * notice, this list of conditions and the following disclaimer.
priyank12p 0:b0c4c25d37ab 19 * - Redistributions in binary form must reproduce the above copyright
priyank12p 0:b0c4c25d37ab 20 * notice, this list of conditions and the following disclaimer in
priyank12p 0:b0c4c25d37ab 21 * the documentation and/or other materials provided with the
priyank12p 0:b0c4c25d37ab 22 * distribution.
priyank12p 0:b0c4c25d37ab 23 * - Neither the name of ARM LIMITED nor the names of its contributors
priyank12p 0:b0c4c25d37ab 24 * may be used to endorse or promote products derived from this
priyank12p 0:b0c4c25d37ab 25 * software without specific prior written permission.
priyank12p 0:b0c4c25d37ab 26 *
priyank12p 0:b0c4c25d37ab 27 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
priyank12p 0:b0c4c25d37ab 28 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
priyank12p 0:b0c4c25d37ab 29 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
priyank12p 0:b0c4c25d37ab 30 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
priyank12p 0:b0c4c25d37ab 31 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
priyank12p 0:b0c4c25d37ab 32 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
priyank12p 0:b0c4c25d37ab 33 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
priyank12p 0:b0c4c25d37ab 34 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
priyank12p 0:b0c4c25d37ab 35 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
priyank12p 0:b0c4c25d37ab 36 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
priyank12p 0:b0c4c25d37ab 37 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
priyank12p 0:b0c4c25d37ab 38 * POSSIBILITY OF SUCH DAMAGE.
priyank12p 0:b0c4c25d37ab 39 * -------------------------------------------------------------------- */
priyank12p 0:b0c4c25d37ab 40
priyank12p 0:b0c4c25d37ab 41 #ifndef _ARM_COMMON_TABLES_H
priyank12p 0:b0c4c25d37ab 42 #define _ARM_COMMON_TABLES_H
priyank12p 0:b0c4c25d37ab 43
priyank12p 0:b0c4c25d37ab 44 #include "arm_math.h"
priyank12p 0:b0c4c25d37ab 45
priyank12p 0:b0c4c25d37ab 46 extern const uint16_t armBitRevTable[1024];
priyank12p 0:b0c4c25d37ab 47 extern const q15_t armRecipTableQ15[64];
priyank12p 0:b0c4c25d37ab 48 extern const q31_t armRecipTableQ31[64];
priyank12p 0:b0c4c25d37ab 49 //extern const q31_t realCoefAQ31[1024];
priyank12p 0:b0c4c25d37ab 50 //extern const q31_t realCoefBQ31[1024];
priyank12p 0:b0c4c25d37ab 51 extern const float32_t twiddleCoef_16[32];
priyank12p 0:b0c4c25d37ab 52 extern const float32_t twiddleCoef_32[64];
priyank12p 0:b0c4c25d37ab 53 extern const float32_t twiddleCoef_64[128];
priyank12p 0:b0c4c25d37ab 54 extern const float32_t twiddleCoef_128[256];
priyank12p 0:b0c4c25d37ab 55 extern const float32_t twiddleCoef_256[512];
priyank12p 0:b0c4c25d37ab 56 extern const float32_t twiddleCoef_512[1024];
priyank12p 0:b0c4c25d37ab 57 extern const float32_t twiddleCoef_1024[2048];
priyank12p 0:b0c4c25d37ab 58 extern const float32_t twiddleCoef_2048[4096];
priyank12p 0:b0c4c25d37ab 59 extern const float32_t twiddleCoef_4096[8192];
priyank12p 0:b0c4c25d37ab 60 #define twiddleCoef twiddleCoef_4096
priyank12p 0:b0c4c25d37ab 61 extern const q31_t twiddleCoef_16_q31[24];
priyank12p 0:b0c4c25d37ab 62 extern const q31_t twiddleCoef_32_q31[48];
priyank12p 0:b0c4c25d37ab 63 extern const q31_t twiddleCoef_64_q31[96];
priyank12p 0:b0c4c25d37ab 64 extern const q31_t twiddleCoef_128_q31[192];
priyank12p 0:b0c4c25d37ab 65 extern const q31_t twiddleCoef_256_q31[384];
priyank12p 0:b0c4c25d37ab 66 extern const q31_t twiddleCoef_512_q31[768];
priyank12p 0:b0c4c25d37ab 67 extern const q31_t twiddleCoef_1024_q31[1536];
priyank12p 0:b0c4c25d37ab 68 extern const q31_t twiddleCoef_2048_q31[3072];
priyank12p 0:b0c4c25d37ab 69 extern const q31_t twiddleCoef_4096_q31[6144];
priyank12p 0:b0c4c25d37ab 70 extern const q15_t twiddleCoef_16_q15[24];
priyank12p 0:b0c4c25d37ab 71 extern const q15_t twiddleCoef_32_q15[48];
priyank12p 0:b0c4c25d37ab 72 extern const q15_t twiddleCoef_64_q15[96];
priyank12p 0:b0c4c25d37ab 73 extern const q15_t twiddleCoef_128_q15[192];
priyank12p 0:b0c4c25d37ab 74 extern const q15_t twiddleCoef_256_q15[384];
priyank12p 0:b0c4c25d37ab 75 extern const q15_t twiddleCoef_512_q15[768];
priyank12p 0:b0c4c25d37ab 76 extern const q15_t twiddleCoef_1024_q15[1536];
priyank12p 0:b0c4c25d37ab 77 extern const q15_t twiddleCoef_2048_q15[3072];
priyank12p 0:b0c4c25d37ab 78 extern const q15_t twiddleCoef_4096_q15[6144];
priyank12p 0:b0c4c25d37ab 79 extern const float32_t twiddleCoef_rfft_32[32];
priyank12p 0:b0c4c25d37ab 80 extern const float32_t twiddleCoef_rfft_64[64];
priyank12p 0:b0c4c25d37ab 81 extern const float32_t twiddleCoef_rfft_128[128];
priyank12p 0:b0c4c25d37ab 82 extern const float32_t twiddleCoef_rfft_256[256];
priyank12p 0:b0c4c25d37ab 83 extern const float32_t twiddleCoef_rfft_512[512];
priyank12p 0:b0c4c25d37ab 84 extern const float32_t twiddleCoef_rfft_1024[1024];
priyank12p 0:b0c4c25d37ab 85 extern const float32_t twiddleCoef_rfft_2048[2048];
priyank12p 0:b0c4c25d37ab 86 extern const float32_t twiddleCoef_rfft_4096[4096];
priyank12p 0:b0c4c25d37ab 87
priyank12p 0:b0c4c25d37ab 88
priyank12p 0:b0c4c25d37ab 89 /* floating-point bit reversal tables */
priyank12p 0:b0c4c25d37ab 90 #define ARMBITREVINDEXTABLE__16_TABLE_LENGTH ((uint16_t)20 )
priyank12p 0:b0c4c25d37ab 91 #define ARMBITREVINDEXTABLE__32_TABLE_LENGTH ((uint16_t)48 )
priyank12p 0:b0c4c25d37ab 92 #define ARMBITREVINDEXTABLE__64_TABLE_LENGTH ((uint16_t)56 )
priyank12p 0:b0c4c25d37ab 93 #define ARMBITREVINDEXTABLE_128_TABLE_LENGTH ((uint16_t)208 )
priyank12p 0:b0c4c25d37ab 94 #define ARMBITREVINDEXTABLE_256_TABLE_LENGTH ((uint16_t)440 )
priyank12p 0:b0c4c25d37ab 95 #define ARMBITREVINDEXTABLE_512_TABLE_LENGTH ((uint16_t)448 )
priyank12p 0:b0c4c25d37ab 96 #define ARMBITREVINDEXTABLE1024_TABLE_LENGTH ((uint16_t)1800)
priyank12p 0:b0c4c25d37ab 97 #define ARMBITREVINDEXTABLE2048_TABLE_LENGTH ((uint16_t)3808)
priyank12p 0:b0c4c25d37ab 98 #define ARMBITREVINDEXTABLE4096_TABLE_LENGTH ((uint16_t)4032)
priyank12p 0:b0c4c25d37ab 99
priyank12p 0:b0c4c25d37ab 100 extern const uint16_t armBitRevIndexTable16[ARMBITREVINDEXTABLE__16_TABLE_LENGTH];
priyank12p 0:b0c4c25d37ab 101 extern const uint16_t armBitRevIndexTable32[ARMBITREVINDEXTABLE__32_TABLE_LENGTH];
priyank12p 0:b0c4c25d37ab 102 extern const uint16_t armBitRevIndexTable64[ARMBITREVINDEXTABLE__64_TABLE_LENGTH];
priyank12p 0:b0c4c25d37ab 103 extern const uint16_t armBitRevIndexTable128[ARMBITREVINDEXTABLE_128_TABLE_LENGTH];
priyank12p 0:b0c4c25d37ab 104 extern const uint16_t armBitRevIndexTable256[ARMBITREVINDEXTABLE_256_TABLE_LENGTH];
priyank12p 0:b0c4c25d37ab 105 extern const uint16_t armBitRevIndexTable512[ARMBITREVINDEXTABLE_512_TABLE_LENGTH];
priyank12p 0:b0c4c25d37ab 106 extern const uint16_t armBitRevIndexTable1024[ARMBITREVINDEXTABLE1024_TABLE_LENGTH];
priyank12p 0:b0c4c25d37ab 107 extern const uint16_t armBitRevIndexTable2048[ARMBITREVINDEXTABLE2048_TABLE_LENGTH];
priyank12p 0:b0c4c25d37ab 108 extern const uint16_t armBitRevIndexTable4096[ARMBITREVINDEXTABLE4096_TABLE_LENGTH];
priyank12p 0:b0c4c25d37ab 109
priyank12p 0:b0c4c25d37ab 110 /* fixed-point bit reversal tables */
priyank12p 0:b0c4c25d37ab 111 #define ARMBITREVINDEXTABLE_FIXED___16_TABLE_LENGTH ((uint16_t)12 )
priyank12p 0:b0c4c25d37ab 112 #define ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH ((uint16_t)24 )
priyank12p 0:b0c4c25d37ab 113 #define ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH ((uint16_t)56 )
priyank12p 0:b0c4c25d37ab 114 #define ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH ((uint16_t)112 )
priyank12p 0:b0c4c25d37ab 115 #define ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH ((uint16_t)240 )
priyank12p 0:b0c4c25d37ab 116 #define ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH ((uint16_t)480 )
priyank12p 0:b0c4c25d37ab 117 #define ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH ((uint16_t)992 )
priyank12p 0:b0c4c25d37ab 118 #define ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH ((uint16_t)1984)
priyank12p 0:b0c4c25d37ab 119 #define ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH ((uint16_t)4032)
priyank12p 0:b0c4c25d37ab 120
priyank12p 0:b0c4c25d37ab 121 extern const uint16_t armBitRevIndexTable_fixed_16[ARMBITREVINDEXTABLE_FIXED___16_TABLE_LENGTH];
priyank12p 0:b0c4c25d37ab 122 extern const uint16_t armBitRevIndexTable_fixed_32[ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH];
priyank12p 0:b0c4c25d37ab 123 extern const uint16_t armBitRevIndexTable_fixed_64[ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH];
priyank12p 0:b0c4c25d37ab 124 extern const uint16_t armBitRevIndexTable_fixed_128[ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH];
priyank12p 0:b0c4c25d37ab 125 extern const uint16_t armBitRevIndexTable_fixed_256[ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH];
priyank12p 0:b0c4c25d37ab 126 extern const uint16_t armBitRevIndexTable_fixed_512[ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH];
priyank12p 0:b0c4c25d37ab 127 extern const uint16_t armBitRevIndexTable_fixed_1024[ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH];
priyank12p 0:b0c4c25d37ab 128 extern const uint16_t armBitRevIndexTable_fixed_2048[ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH];
priyank12p 0:b0c4c25d37ab 129 extern const uint16_t armBitRevIndexTable_fixed_4096[ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH];
priyank12p 0:b0c4c25d37ab 130
priyank12p 0:b0c4c25d37ab 131 /* Tables for Fast Math Sine and Cosine */
priyank12p 0:b0c4c25d37ab 132 extern const float32_t sinTable_f32[FAST_MATH_TABLE_SIZE + 1];
priyank12p 0:b0c4c25d37ab 133 extern const q31_t sinTable_q31[FAST_MATH_TABLE_SIZE + 1];
priyank12p 0:b0c4c25d37ab 134 extern const q15_t sinTable_q15[FAST_MATH_TABLE_SIZE + 1];
priyank12p 0:b0c4c25d37ab 135
priyank12p 0:b0c4c25d37ab 136 #endif /* ARM_COMMON_TABLES_H */