@@ -260,6 +260,79 @@ YT_TEST (triangle, triangle_test_normal)
260
260
YT_END ();
261
261
}
262
262
263
+ YT_TEST (am , am_wave_normal )
264
+ {
265
+ unsigned int iter_num = 1 ;
266
+ mode_is_dirty_fake .resources = & iter_num ;
267
+ mode_is_dirty_fake .handler = mode_is_dirty_after_some_iterations_handler ;
268
+
269
+ YT_MUST_CALL_IN_ORDER (HAL_IO_MAKE_OUTPUT , YT_V (ANALOG_OUTPUT_GPIO ),
270
+ YT_V (ANALOG_OUTPUT_PIN_MASK ));
271
+
272
+ // Following traces the general sine wave pattern expecting the followings
273
+
274
+ // 1. Starting with half way value
275
+ YT_MUST_CALL_IN_ORDER (HAL_IO_OUT_WRITE , YT_V (ANALOG_OUTPUT_GPIO ),
276
+ YT_V (DAC_WIDTH_MAX_VALUE / 2 ));
277
+
278
+ // As AM wave slowly increases in amplitde we expect more than 10 carrier waves reaching rail to
279
+ // rail values.
280
+ YT_IN_SEQUENCE (10 )
281
+ {
282
+ // 2. Then it must reach the maximum value
283
+ YT_MUST_CALL_IN_ORDER (HAL_IO_OUT_WRITE , YT_V (ANALOG_OUTPUT_GPIO ),
284
+ YT_V (DAC_WIDTH_MAX_VALUE - 1 ));
285
+
286
+ // 3. Then it must reach the zero
287
+ YT_MUST_CALL_IN_ORDER (HAL_IO_OUT_WRITE , YT_V (ANALOG_OUTPUT_GPIO ), YT_V (0 ));
288
+ }
289
+
290
+ // 4. End it end with again around half way
291
+ YT_MUST_CALL_IN_ORDER (HAL_IO_OUT_WRITE , YT_V (ANALOG_OUTPUT_GPIO ),
292
+ YT_V ((DAC_WIDTH_MAX_VALUE / 2 ) - 1 ));
293
+
294
+ YT_MUST_CALL_IN_ORDER (HAL_IO_OUT_LOW , YT_V (ANALOG_OUTPUT_GPIO ),
295
+ YT_V (ANALOG_OUTPUT_PIN_MASK ));
296
+
297
+ am_test ();
298
+ YT_END ();
299
+ }
300
+
301
+ // TODO: In order to write a test to check if only one cycle of the wave is outputed and not more,
302
+ // requires YT_MUST_CALL_IN_ORDER_EXACT_TIMES, which does not exist yet.
303
+
304
+ YT_TEST (sine , sine_wave_normal )
305
+ {
306
+ unsigned int iter_num = 1 ;
307
+ mode_is_dirty_fake .resources = & iter_num ;
308
+ mode_is_dirty_fake .handler = mode_is_dirty_after_some_iterations_handler ;
309
+
310
+ YT_MUST_CALL_IN_ORDER (HAL_IO_MAKE_OUTPUT , YT_V (ANALOG_OUTPUT_GPIO ),
311
+ YT_V (ANALOG_OUTPUT_PIN_MASK ));
312
+
313
+ // Following traces the general sine wave pattern expecting the followings
314
+ // 1. Starting with half way value
315
+ YT_MUST_CALL_IN_ORDER (HAL_IO_OUT_WRITE , YT_V (ANALOG_OUTPUT_GPIO ),
316
+ YT_V (DAC_WIDTH_MAX_VALUE / 2 ));
317
+
318
+ // 2. Then it must reach the maximum value
319
+ YT_MUST_CALL_IN_ORDER (HAL_IO_OUT_WRITE , YT_V (ANALOG_OUTPUT_GPIO ),
320
+ YT_V (DAC_WIDTH_MAX_VALUE - 1 ));
321
+
322
+ // 3. Then it must reach the zero
323
+ YT_MUST_CALL_IN_ORDER (HAL_IO_OUT_WRITE , YT_V (ANALOG_OUTPUT_GPIO ), YT_V (0 ));
324
+
325
+ // 4. Then again it reaches around half way
326
+ YT_MUST_CALL_IN_ORDER (HAL_IO_OUT_WRITE , YT_V (ANALOG_OUTPUT_GPIO ),
327
+ YT_V ((DAC_WIDTH_MAX_VALUE / 2 ) - 1 ));
328
+
329
+ YT_MUST_CALL_IN_ORDER (HAL_IO_OUT_LOW , YT_V (ANALOG_OUTPUT_GPIO ),
330
+ YT_V (ANALOG_OUTPUT_PIN_MASK ));
331
+
332
+ sine_test ();
333
+ YT_END ();
334
+ }
335
+
263
336
void yt_reset ()
264
337
{
265
338
reset_hal_mocks ();
@@ -276,5 +349,7 @@ int main (void)
276
349
two_pulse_test_normal ();
277
350
sawtooth_test_normal ();
278
351
triangle_test_normal ();
352
+ sine_wave_normal ();
353
+ am_wave_normal ();
279
354
YT_RETURN_WITH_REPORT ();
280
355
}
0 commit comments