From 4d4838d3923e7a58a538cebdf196413378b6cd58 Mon Sep 17 00:00:00 2001 From: Firew0lf Date: Tue, 18 Aug 2015 00:34:14 +0200 Subject: [PATCH] Added the "ctr.news" API. WIP, should not work correctly. Seriously, don't use it. Don't even load it. --- source/ctr.c | 6 ++++-- source/news.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 source/news.c diff --git a/source/ctr.c b/source/ctr.c index c9af954..0b35876 100644 --- a/source/ctr.c +++ b/source/ctr.c @@ -3,13 +3,15 @@ int load_gfx_lib(lua_State *L); int load_os_lib(lua_State *L); +int load_news_lib(lua_State *L); static const struct luaL_Reg ctr_lib[] = { { NULL, NULL } }; struct { char *name; int (*load)(lua_State *L); } ctr_libs[] = { - { "gfx", load_gfx_lib }, + { "gfx", load_gfx_lib }, + { "news", load_news_lib }, { NULL, NULL }, }; @@ -27,4 +29,4 @@ int luaopen_ctr_lib(lua_State *L) { void load_ctr_lib(lua_State *L) { load_os_lib(L); luaL_requiref(L, "ctr", luaopen_ctr_lib, 0); -} \ No newline at end of file +} diff --git a/source/news.c b/source/news.c new file mode 100644 index 0000000..197bfe1 --- /dev/null +++ b/source/news.c @@ -0,0 +1,54 @@ +#include <3ds/types.h> +#include <3ds/util/utf.h> +#include <3ds/services/news.h> + +#include +#include + +static int news_init(lua_State *L) { + newsInit(); + + return 0; +} + +static int news_notification(lua_State *L) { + const char *title = luaL_checkstring(L, 1); + const char *message = luaL_checkstring(L, 2); + const void *imageData = luaL_checkstring(L, 3); + bool jpeg = false; + if (lua_isboolean(L, 4)) + jpeg = lua_toboolean(L, 4); + + const u16* cTitle = 0; + const u16* cMessage = 0; + u32 titleLength, messageLength, imageDataLength = 0; + + titleLength = (u32) utf8_to_utf16((uint16_t*)cTitle, (uint8_t*)title, sizeof(title)); + messageLength = (u32) utf8_to_utf16((uint16_t*)cMessage, (uint8_t*)message, sizeof(message)); + + NEWSU_AddNotification(cTitle, titleLength, cMessage, messageLength, imageData, imageDataLength, jpeg); + + return 0; +} + +static int news_shutdown(lua_State *L) { + newsExit(); + + return 0; +} + +static const struct luaL_Reg news_lib[] = { + {"init", news_init }, + {"notification", news_notification}, + {"shutdown", news_shutdown }, + {NULL, NULL} +}; + +int luaopen_news_lib(lua_State *L) { + luaL_newlib(L, news_lib); + return 1; +} + +void load_news_lib(lua_State *L) { + luaL_requiref(L, "ctr.news", luaopen_news_lib, 0); +}