PatternMgr.cpp 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. /* ----------------------------------------------------------------------
  2. * Project: CMSIS DSP Library
  3. * Title: PatternMgr.cpp
  4. * Description: Pattern Manager
  5. *
  6. * The link between a pattern and a memory manager.
  7. * Allow creation and initialization of patterns
  8. *
  9. * $Date: 20. June 2019
  10. * $Revision: V1.0.0
  11. *
  12. * Target Processor: Cortex-M cores
  13. * -------------------------------------------------------------------- */
  14. /*
  15. * Copyright (C) 2010-2019 ARM Limited or its affiliates. All rights reserved.
  16. *
  17. * SPDX-License-Identifier: Apache-2.0
  18. *
  19. * Licensed under the Apache License, Version 2.0 (the License); you may
  20. * not use this file except in compliance with the License.
  21. * You may obtain a copy of the License at
  22. *
  23. * www.apache.org/licenses/LICENSE-2.0
  24. *
  25. * Unless required by applicable law or agreed to in writing, software
  26. * distributed under the License is distributed on an AS IS BASIS, WITHOUT
  27. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  28. * See the License for the specific language governing permissions and
  29. * limitations under the License.
  30. */
  31. #include "Test.h"
  32. namespace Client
  33. {
  34. PatternMgr::PatternMgr(IO* io, Memory *mem)
  35. {
  36. m_io = io;
  37. m_mem = mem;
  38. }
  39. #define LOCAL(TYPE,EXT) \
  40. TYPE *PatternMgr::local_##EXT(Testing::nbSamples_t nbSamples) \
  41. { \
  42. return((TYPE*)(m_mem->NewBuffer(sizeof(TYPE)*nbSamples))); \
  43. }
  44. LOCAL(float64_t,f64)
  45. LOCAL(float32_t,f32)
  46. LOCAL(q63_t,q63)
  47. LOCAL(q31_t,q31)
  48. LOCAL(q15_t,q15)
  49. LOCAL(q7_t,q7)
  50. LOCAL(uint32_t,u32)
  51. LOCAL(uint16_t,u16)
  52. LOCAL(uint8_t,u8)
  53. float64_t *PatternMgr::load_f64(Testing::PatternID_t id,Testing::nbSamples_t& nbSamples,Testing::nbSamples_t maxSamples)
  54. {
  55. nbSamples=m_io->GetPatternSize(id);
  56. if ((maxSamples != MAX_NB_SAMPLES) && (maxSamples < nbSamples))
  57. {
  58. nbSamples = maxSamples;
  59. }
  60. char *b = m_mem->NewBuffer(sizeof(float64_t)*nbSamples);
  61. if (b != NULL)
  62. {
  63. m_io->ImportPattern_f64(id,b,nbSamples);
  64. }
  65. return((float64_t*)b);
  66. }
  67. float32_t *PatternMgr::load_f32(Testing::PatternID_t id,Testing::nbSamples_t& nbSamples,Testing::nbSamples_t maxSamples)
  68. {
  69. nbSamples=m_io->GetPatternSize(id);
  70. if ((maxSamples != MAX_NB_SAMPLES) && (maxSamples < nbSamples))
  71. {
  72. nbSamples = maxSamples;
  73. }
  74. char *b = m_mem->NewBuffer(sizeof(float32_t)*nbSamples);
  75. if (b != NULL)
  76. {
  77. m_io->ImportPattern_f32(id,b,nbSamples);
  78. }
  79. return((float32_t*)b);
  80. }
  81. q63_t *PatternMgr::load_q63(Testing::PatternID_t id,Testing::nbSamples_t& nbSamples,Testing::nbSamples_t maxSamples)
  82. {
  83. nbSamples=m_io->GetPatternSize(id);
  84. if ((maxSamples != MAX_NB_SAMPLES) && (maxSamples < nbSamples))
  85. {
  86. nbSamples = maxSamples;
  87. }
  88. char *b = m_mem->NewBuffer(sizeof(q63_t)*nbSamples);
  89. if (b != NULL)
  90. {
  91. m_io->ImportPattern_q63(id,b,nbSamples);
  92. }
  93. return((q63_t*)b);
  94. }
  95. q31_t *PatternMgr::load_q31(Testing::PatternID_t id,Testing::nbSamples_t& nbSamples,Testing::nbSamples_t maxSamples)
  96. {
  97. nbSamples=m_io->GetPatternSize(id);
  98. if ((maxSamples != MAX_NB_SAMPLES) && (maxSamples < nbSamples))
  99. {
  100. nbSamples = maxSamples;
  101. }
  102. char *b = m_mem->NewBuffer(sizeof(q31_t)*nbSamples);
  103. if (b != NULL)
  104. {
  105. m_io->ImportPattern_q31(id,b,nbSamples);
  106. }
  107. return((q31_t*)b);
  108. }
  109. q15_t *PatternMgr::load_q15(Testing::PatternID_t id,Testing::nbSamples_t& nbSamples,Testing::nbSamples_t maxSamples)
  110. {
  111. nbSamples=m_io->GetPatternSize(id);
  112. if ((maxSamples != MAX_NB_SAMPLES) && (maxSamples < nbSamples))
  113. {
  114. nbSamples = maxSamples;
  115. }
  116. char *b = m_mem->NewBuffer(sizeof(q15_t)*nbSamples);
  117. if (b != NULL)
  118. {
  119. m_io->ImportPattern_q15(id,b,nbSamples);
  120. }
  121. return((q15_t*)b);
  122. }
  123. q7_t *PatternMgr::load_q7(Testing::PatternID_t id,Testing::nbSamples_t& nbSamples,Testing::nbSamples_t maxSamples)
  124. {
  125. nbSamples=m_io->GetPatternSize(id);
  126. if ((maxSamples != MAX_NB_SAMPLES) && (maxSamples < nbSamples))
  127. {
  128. nbSamples = maxSamples;
  129. }
  130. char *b = m_mem->NewBuffer(sizeof(q7_t)*nbSamples);
  131. if (b != NULL)
  132. {
  133. m_io->ImportPattern_q7(id,b,nbSamples);
  134. }
  135. return((q7_t*)b);
  136. }
  137. uint32_t *PatternMgr::load_u32(Testing::PatternID_t id,Testing::nbSamples_t& nbSamples,Testing::nbSamples_t maxSamples)
  138. {
  139. nbSamples=m_io->GetPatternSize(id);
  140. if ((maxSamples != MAX_NB_SAMPLES) && (maxSamples < nbSamples))
  141. {
  142. nbSamples = maxSamples;
  143. }
  144. char *b = m_mem->NewBuffer(sizeof(uint32_t)*nbSamples);
  145. if (b != NULL)
  146. {
  147. m_io->ImportPattern_u32(id,b,nbSamples);
  148. }
  149. return((uint32_t*)b);
  150. }
  151. uint16_t *PatternMgr::load_u16(Testing::PatternID_t id,Testing::nbSamples_t& nbSamples,Testing::nbSamples_t maxSamples)
  152. {
  153. nbSamples=m_io->GetPatternSize(id);
  154. if ((maxSamples != MAX_NB_SAMPLES) && (maxSamples < nbSamples))
  155. {
  156. nbSamples = maxSamples;
  157. }
  158. char *b = m_mem->NewBuffer(sizeof(uint16_t)*nbSamples);
  159. if (b != NULL)
  160. {
  161. m_io->ImportPattern_u16(id,b,nbSamples);
  162. }
  163. return((uint16_t*)b);
  164. }
  165. uint8_t *PatternMgr::load_u8(Testing::PatternID_t id,Testing::nbSamples_t& nbSamples,Testing::nbSamples_t maxSamples)
  166. {
  167. nbSamples=m_io->GetPatternSize(id);
  168. if ((maxSamples != MAX_NB_SAMPLES) && (maxSamples < nbSamples))
  169. {
  170. nbSamples = maxSamples;
  171. }
  172. char *b = m_mem->NewBuffer(sizeof(uint8_t)*nbSamples);
  173. if (b != NULL)
  174. {
  175. m_io->ImportPattern_u8(id,b,nbSamples);
  176. }
  177. return((uint8_t*)b);
  178. }
  179. void PatternMgr::dumpPattern_f64(Testing::outputID_t id,Testing::nbSamples_t nbSamples,float64_t* data)
  180. {
  181. m_io->DumpPattern_f64(id,nbSamples,data);
  182. }
  183. void PatternMgr::dumpPattern_f32(Testing::outputID_t id,Testing::nbSamples_t nbSamples,float32_t* data)
  184. {
  185. m_io->DumpPattern_f32(id,nbSamples,data);
  186. }
  187. void PatternMgr::dumpPattern_q63(Testing::outputID_t id,Testing::nbSamples_t nbSamples,q63_t* data)
  188. {
  189. m_io->DumpPattern_q63(id,nbSamples,data);
  190. }
  191. void PatternMgr::dumpPattern_q31(Testing::outputID_t id,Testing::nbSamples_t nbSamples,q31_t* data)
  192. {
  193. m_io->DumpPattern_q31(id,nbSamples,data);
  194. }
  195. void PatternMgr::dumpPattern_q15(Testing::outputID_t id,Testing::nbSamples_t nbSamples,q15_t* data)
  196. {
  197. m_io->DumpPattern_q15(id,nbSamples,data);
  198. }
  199. void PatternMgr::dumpPattern_q7(Testing::outputID_t id,Testing::nbSamples_t nbSamples,q7_t* data)
  200. {
  201. m_io->DumpPattern_q7(id,nbSamples,data);
  202. }
  203. void PatternMgr::dumpPattern_u32(Testing::outputID_t id,Testing::nbSamples_t nbSamples,uint32_t* data)
  204. {
  205. m_io->DumpPattern_u32(id,nbSamples,data);
  206. }
  207. void PatternMgr::dumpPattern_u16(Testing::outputID_t id,Testing::nbSamples_t nbSamples,uint16_t* data)
  208. {
  209. m_io->DumpPattern_u16(id,nbSamples,data);
  210. }
  211. void PatternMgr::dumpPattern_u8(Testing::outputID_t id,Testing::nbSamples_t nbSamples,uint8_t* data)
  212. {
  213. m_io->DumpPattern_u8(id,nbSamples,data);
  214. }
  215. void PatternMgr::freeAll()
  216. {
  217. m_mem->FreeMemory();
  218. }
  219. }