14d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro/*
24d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro * Copyright (C) 2016 The Android Open Source Project
34d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro *
44d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro * Licensed under the Apache License, Version 2.0 (the "License");
54d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro * you may not use this file except in compliance with the License.
64d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro * You may obtain a copy of the License at
74d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro *
84d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro *      http://www.apache.org/licenses/LICENSE-2.0
94d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro *
104d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro * Unless required by applicable law or agreed to in writing, software
114d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro * distributed under the License is distributed on an "AS IS" BASIS,
124d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro * See the License for the specific language governing permissions and
144d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro * limitations under the License.
154d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro */
164d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro
174d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro#ifndef _GTS_NANOAPPS_GENERAL_TEST_GET_TIME_TEST_H_
184d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro#define _GTS_NANOAPPS_GENERAL_TEST_GET_TIME_TEST_H_
194d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro
204d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro#include <general_test/test.h>
214d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro
224d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguronamespace general_test {
234d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro
244d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro/**
254d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro * Checks that chreGetTime() is reasonable.
264d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro *
274d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro * We check that it's monotonically increasing, and mostly in line with
284d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro * the application processor's notion of time passing.
294d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro *
304d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro * Protocol:
314d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro * Host:    kGetTimeTest, no data
324d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro * Nanoapp: kContinue, 64-bit timestamp (little endian)
334d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro * [2.5 second pause]
344d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro * Host:    kContinue, no data
354d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro * Nanoapp: kContinue, 64-bit timestamp (little endian)
364d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro * [Host declares pass]
374d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro */
384d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguroclass GetTimeTest : public Test {
394d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro public:
404d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro  GetTimeTest();
414d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro
424d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro protected:
434d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro  void handleEvent(uint32_t senderInstanceId, uint16_t eventType,
444d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro                   const void* eventData) override;
454d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro  void setUp(uint32_t messageSize, const void *message) override;
464d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro
474d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro private:
484d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro  int mContinueCount;
494d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro};
504d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro
514d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro}  // namespace general_test
524d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro
534d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro
544d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro#endif  // _GTS_NANOAPPS_GENERAL_TEST_GET_TIME_TEST_H_
55