58 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * Copyright (c) 2023 Fancy Code.
 | 
						|
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
						|
 * you may not use this file except in compliance with the License.
 | 
						|
 * You may obtain a copy of the License at
 | 
						|
 *
 | 
						|
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
 *
 | 
						|
 * Unless required by applicable law or agreed to in writing, software
 | 
						|
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
						|
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
 * See the License for the specific language governing permissions and
 | 
						|
 * limitations under the License.
 | 
						|
 */
 | 
						|
#ifndef IHAL_H
 | 
						|
#define IHAL_H
 | 
						|
#include "StatusCode.h"
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
// enum KEY_EVENT
 | 
						|
// {
 | 
						|
//     KEY_EVENT_NOT_PRESSING = 0,
 | 
						|
//     KEY_EVENT_PRESSING,
 | 
						|
//     KEY_EVENT_END
 | 
						|
// };
 | 
						|
// typedef struct v_key_owner VKeyOwner;
 | 
						|
// typedef struct v_key_owner
 | 
						|
// {
 | 
						|
//     // StatusCode (*init)(VKeyOwner *);
 | 
						|
//     // StatusCode (*un_init)(VKeyOwner *);
 | 
						|
//     void (*key_event_trigger)(VKeyOwner *, const enum KEY_EVENT);
 | 
						|
// } VKeyOwner;
 | 
						|
// typedef struct v_key_handle VKeyHandle;
 | 
						|
// typedef struct v_key_handle
 | 
						|
// {
 | 
						|
//     // StatusCode (*init)(VKeyHandle *);
 | 
						|
//     // StatusCode (*un_init)(VKeyHandle *);
 | 
						|
//     StatusCode (*set_owner)(VKeyHandle *, VKeyOwner *);
 | 
						|
// } VKeyHandle;
 | 
						|
typedef struct i_hal IHal;
 | 
						|
typedef struct i_hal
 | 
						|
{
 | 
						|
    StatusCode (*init)(IHal *);
 | 
						|
    StatusCode (*un_init)(IHal *);
 | 
						|
    void (*free)(void *);
 | 
						|
} IHal;
 | 
						|
IHal *GetHalIntance(void);
 | 
						|
StatusCode NewIHal(IHal **object);
 | 
						|
void ResetHalImpl(IHal *impl);
 | 
						|
static inline StatusCode IHalInit(void) { return GetHalIntance()->init(GetHalIntance()); }
 | 
						|
static inline StatusCode IHalUnInit(void) { return GetHalIntance()->un_init(GetHalIntance()); }
 | 
						|
StatusCode CreateHalModule(void);
 | 
						|
StatusCode DestroyHalModule(void);
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 | 
						|
#endif |