mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-21 12:32:40 +02:00
110 lines
3.6 KiB
C
110 lines
3.6 KiB
C
/**
|
|
* @file news.h
|
|
* @brief News service IPC wrapper.
|
|
* @author Behemoth
|
|
* @copyright libnx Authors
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "../kernel/event.h"
|
|
#include "../services/acc.h"
|
|
#include "../sf/service.h"
|
|
#include "../types.h"
|
|
|
|
typedef enum {
|
|
NewsServiceType_Administrator = 0, ///< Initializes news:a
|
|
NewsServiceType_Configuration = 1, ///< Initializes news:c
|
|
NewsServiceType_Manager = 2, ///< Initializes news:m
|
|
NewsServiceType_Post = 3, ///< Initializes news:p
|
|
NewsServiceType_Viewer = 4, ///< Initializes news:v
|
|
|
|
NewsServiceType_Count
|
|
} NewsServiceType;
|
|
|
|
typedef struct {
|
|
char name[0x20];
|
|
} NewsTopicName;
|
|
|
|
typedef struct {
|
|
Service s;
|
|
} NewsNewlyArrivedEventHolder;
|
|
|
|
typedef struct {
|
|
Service s;
|
|
} NewsDataService;
|
|
|
|
typedef struct {
|
|
Service s;
|
|
} NewsDatabaseService;
|
|
|
|
typedef struct {
|
|
Service s;
|
|
} NewsOverwriteEventHolder;
|
|
|
|
typedef struct {
|
|
char news_id[0x18];
|
|
char user_id[0x18];
|
|
s64 received_at;
|
|
s32 read;
|
|
s32 newly;
|
|
s32 displayed;
|
|
} NewsRecordV1;
|
|
|
|
typedef struct {
|
|
char news_id[0x18];
|
|
char user_id[0x18];
|
|
NewsTopicName topic_id;
|
|
s64 received_at;
|
|
s64 pad_0;
|
|
s32 decoration_type;
|
|
s32 read;
|
|
s32 newly;
|
|
s32 displayed;
|
|
s32 feedback;
|
|
s32 pad_1;
|
|
s32 extra_1;
|
|
s32 extra_2;
|
|
} NewsRecord;
|
|
|
|
Result newsInitialize(NewsServiceType service_type);
|
|
void newsExit(void);
|
|
|
|
Service *newsGetServiceSession(void);
|
|
|
|
Result newsCreateNewlyArrivedEventHolder(NewsNewlyArrivedEventHolder *out);
|
|
Result newsCreateNewsDataService(NewsDataService *out);
|
|
Result newsCreateNewsDatabaseService(NewsDatabaseService *out);
|
|
Result newsCreateOverwriteEventHolder(NewsOverwriteEventHolder *out); ///< [2.0.0+]
|
|
|
|
Result newsPostLocalNews(const void *news, size_t size);
|
|
Result newsSetPassphrase(u64 program_id, const char *passphrase);
|
|
Result newsGetSubscriptionStatus(const char *filter, u32 *status);
|
|
Result newsGetTopicList(u32 channel, u32 *out_count, NewsTopicName *out, u32 max_count); ///< [3.0.0+]
|
|
Result newsGetSavedataUsage(u64 *current, u64 *total); ///< [6.0.0+]
|
|
Result newsIsSystemUpdateRequired(bool *out);
|
|
Result newsGetDatabaseVersion(u32 *version); ///< [10.0.0+]
|
|
Result newsRequestImmediateReception(const char *filter);
|
|
Result newsSetSubscriptionStatus(const char *filter, u32 status);
|
|
Result newsClearStorage(void);
|
|
Result newsClearSubscriptionStatusAll(void);
|
|
Result newsGetNewsDatabaseDump(void *buffer, u64 size, u64 *out);
|
|
|
|
void newsNewlyArrivedEventHolderClose(NewsNewlyArrivedEventHolder *srv);
|
|
Result newsNewlyArrivedEventHolderGet(NewsNewlyArrivedEventHolder *srv, Event *out);
|
|
|
|
void newsDataClose(NewsDataService *srv);
|
|
Result newsDataOpen(NewsDataService *srv, const char *file_name);
|
|
Result newsDataOpenWithNewsRecordV1(NewsDataService *srv, NewsRecordV1 *record);
|
|
Result newsDataRead(NewsDataService *srv, u64 *bytes_read, u64 offset, void *out, size_t out_size);
|
|
Result newsDataGetSize(NewsDataService *srv, u64 *size);
|
|
Result newsDataOpenWithNewsRecord(NewsDataService *srv, NewsRecord *record); ///< [6.0.0+]
|
|
|
|
void newsDatabaseClose(NewsDatabaseService *srv);
|
|
Result newsDatabaseGetListV1(NewsDatabaseService *srv, NewsRecordV1 *out, u32 max_count, const char *where, const char *order, u32 *count, u32 offset);
|
|
Result newsDatabaseCount(NewsDatabaseService *srv, const char *filter, u32 *count);
|
|
Result newsDatabaseGetList(NewsDatabaseService *srv, NewsRecord *out, u32 max_count, const char *where, const char *order, u32 *count, u32 offset); ///< [6.0.0+]
|
|
|
|
void newsOverwriteEventHolderClose(NewsOverwriteEventHolder *srv);
|
|
Result newsOverwriteEventHolderGet(NewsOverwriteEventHolder *srv, Event *out);
|