12ee81decSopenharmony_ci/*
22ee81decSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
32ee81decSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
42ee81decSopenharmony_ci * you may not use this file except in compliance with the License.
52ee81decSopenharmony_ci * You may obtain a copy of the License at
62ee81decSopenharmony_ci *
72ee81decSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
82ee81decSopenharmony_ci *
92ee81decSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
102ee81decSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
112ee81decSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
122ee81decSopenharmony_ci * See the License for the specific language governing permissions and
132ee81decSopenharmony_ci * limitations under the License.
142ee81decSopenharmony_ci */
152ee81decSopenharmony_ci
162ee81decSopenharmony_ci#ifndef SERVICE_MSG_MESSENGER_WRAPPER_H
172ee81decSopenharmony_ci#define SERVICE_MSG_MESSENGER_WRAPPER_H
182ee81decSopenharmony_ci
192ee81decSopenharmony_ci#include <stdbool.h>
202ee81decSopenharmony_ci#include <stdint.h>
212ee81decSopenharmony_ci
222ee81decSopenharmony_ci#include "device_security_defines.h"
232ee81decSopenharmony_ci
242ee81decSopenharmony_ci#ifdef __cplusplus
252ee81decSopenharmony_ciextern "C" {
262ee81decSopenharmony_ci#endif
272ee81decSopenharmony_ci
282ee81decSopenharmony_ci#define ONLINE 1
292ee81decSopenharmony_ci#define OFFLINE 0
302ee81decSopenharmony_ci
312ee81decSopenharmony_citypedef int32_t (*MessageReceiver)(const DeviceIdentify *devId, const uint8_t *msg, uint32_t len);
322ee81decSopenharmony_ci
332ee81decSopenharmony_citypedef int32_t (*StatusReceiver)(const DeviceIdentify *devId, uint32_t status, int32_t level);
342ee81decSopenharmony_ci
352ee81decSopenharmony_citypedef int32_t (*SendResultNotifier)(const DeviceIdentify *devId, uint64_t transNo, uint32_t result);
362ee81decSopenharmony_ci
372ee81decSopenharmony_citypedef int32_t (*DeviceProcessor)(const DeviceIdentify *devId, int32_t level, void *para);
382ee81decSopenharmony_ci
392ee81decSopenharmony_civoid SendMsgToDevice(uint64_t transNo, const DeviceIdentify *devId, const uint8_t *msg, uint32_t msgLen);
402ee81decSopenharmony_ci
412ee81decSopenharmony_ciuint32_t InitMessenger(const MessageReceiver messageReceiver, const StatusReceiver statusReceiver,
422ee81decSopenharmony_ci    const SendResultNotifier notifier);
432ee81decSopenharmony_ci
442ee81decSopenharmony_ciuint32_t DeinitMessenger(void);
452ee81decSopenharmony_ci
462ee81decSopenharmony_cibool GetMessengerStatus(void);
472ee81decSopenharmony_ci
482ee81decSopenharmony_cibool GetPeerDeviceOnlineStatus(const DeviceIdentify *devId, int32_t *level);
492ee81decSopenharmony_ci
502ee81decSopenharmony_ciconst DeviceIdentify *GetSelfDevice(int32_t *level);
512ee81decSopenharmony_ci
522ee81decSopenharmony_ciconst char *GetMessengerPackageName(void) __attribute__((weak));
532ee81decSopenharmony_ciconst char *GetMessengerPrimarySessionName(void) __attribute__((weak));
542ee81decSopenharmony_ciconst char *GetMessengerSecondarySessionName(void) __attribute__((weak));
552ee81decSopenharmony_ci
562ee81decSopenharmony_ci#ifdef __cplusplus
572ee81decSopenharmony_ci}
582ee81decSopenharmony_ci#endif
592ee81decSopenharmony_ci
602ee81decSopenharmony_ci#endif // SERVICE_MSG_MESSENGER_WRAPPER_H
61