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_TIMER_CANCEL_TEST_H_ 184d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro#define _GTS_NANOAPPS_GENERAL_TEST_TIMER_CANCEL_TEST_H_ 194d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro 204d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro#include <general_test/test.h> 214d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro#include <chre.h> 224d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro 234d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguronamespace general_test { 244d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro 254d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro/** 264d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro * Checks that chreTimerCancel() works by trying various usages. 274d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro * 284d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro * Simple Protocol. 294d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro */ 304d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguroclass TimerCancelTest : public Test { 314d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro public: 324d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro TimerCancelTest(); 334d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro 344d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro protected: 354d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro void handleEvent(uint32_t senderInstanceId, uint16_t eventType, 364d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro const void* eventData) override; 374d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro void setUp(uint32_t messageSize, const void *message) override; 384d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro 394d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro private: 404d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro struct Stage { 414d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro uint32_t stage; 424d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro uint32_t timerId; 434d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro bool oneShot; 444d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro bool expectCallback; 454d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro 464d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro // Leave timerId invalid. 474d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro Stage(uint32_t stage_, bool oneShot_, bool expectCallback_) : 484d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro stage(stage_), timerId(CHRE_TIMER_INVALID), oneShot(oneShot_), 494d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro expectCallback(expectCallback_) {} 504d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro }; 514d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro 524d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro bool mInMethod; 534d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro 544d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro static constexpr size_t kStageCount = 4; 554d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro Stage mStages[kStageCount]; 564d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro 574d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro static constexpr uint32_t kAllFinished = (1 << kStageCount) - 1; 584d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro uint32_t mFinishedBitmask; 594d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro 604d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro void startStages(); 614d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro void handleStageEvent(Stage *stage); 624d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro void markSuccess(uint32_t stage); 634d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro}; 644d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro 654d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro} // namespace general_test 664d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro 674d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro 684d04a937b1bf7a949dfb00650b2640a9ed0c8acaArthur Ishiguro#endif // _GTS_NANOAPPS_GENERAL_TEST_TIMER_CANCEL_TEST_H_ 69