Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ruanhaishen
Nodemcu Firmware
Commits
81be529d
Commit
81be529d
authored
Feb 19, 2015
by
devsaurus
Browse files
preparation for adding more display devices: allocate and construct page buffer
dynamically to save heap for unused device types
parent
8e42631a
Changes
1
Show whitespace changes
Inline
Side-by-side
app/modules/u8g.c
View file @
81be529d
...
@@ -8,11 +8,21 @@
...
@@ -8,11 +8,21 @@
#include "lrotable.h"
#include "lrotable.h"
//#include "c_string.h"
//#include "c_string.h"
//
#include "c_stdlib.h"
#include "c_stdlib.h"
#include "u8g.h"
#include "u8g.h"
typedef
u8g_t
lu8g_userdata_t
;
struct
_lu8g_userdata_t
{
u8g_t
u8g
;
u8g_pb_t
pb
;
u8g_dev_t
dev
;
};
typedef
struct
_lu8g_userdata_t
lu8g_userdata_t
;
// shorthand macro for the u8g structure inside the userdata
#define LU8G (&(lud->u8g))
// Font look-up array
// Font look-up array
...
@@ -79,7 +89,7 @@ static int lu8g_begin( lua_State *L )
...
@@ -79,7 +89,7 @@ static int lu8g_begin( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
u8g_Begin
(
lud
);
u8g_Begin
(
LU8G
);
return
0
;
return
0
;
}
}
...
@@ -94,7 +104,7 @@ static int lu8g_setFont( lua_State *L )
...
@@ -94,7 +104,7 @@ static int lu8g_setFont( lua_State *L )
lua_Integer
fontnr
=
luaL_checkinteger
(
L
,
2
);
lua_Integer
fontnr
=
luaL_checkinteger
(
L
,
2
);
if
((
fontnr
>=
0
)
&&
(
fontnr
<
(
sizeof
(
font_array
)
/
sizeof
(
u8g_fntpgm_uint8_t
))))
if
((
fontnr
>=
0
)
&&
(
fontnr
<
(
sizeof
(
font_array
)
/
sizeof
(
u8g_fntpgm_uint8_t
))))
u8g_SetFont
(
lud
,
font_array
[
fontnr
]
);
u8g_SetFont
(
LU8G
,
font_array
[
fontnr
]
);
return
0
;
return
0
;
}
}
...
@@ -107,7 +117,7 @@ static int lu8g_setFontRefHeightAll( lua_State *L )
...
@@ -107,7 +117,7 @@ static int lu8g_setFontRefHeightAll( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
u8g_SetFontRefHeightAll
(
lud
);
u8g_SetFontRefHeightAll
(
LU8G
);
return
0
;
return
0
;
}
}
...
@@ -120,7 +130,7 @@ static int lu8g_setFontRefHeightExtendedText( lua_State *L )
...
@@ -120,7 +130,7 @@ static int lu8g_setFontRefHeightExtendedText( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
u8g_SetFontRefHeightExtendedText
(
lud
);
u8g_SetFontRefHeightExtendedText
(
LU8G
);
return
0
;
return
0
;
}
}
...
@@ -133,7 +143,7 @@ static int lu8g_setFontRefHeightText( lua_State *L )
...
@@ -133,7 +143,7 @@ static int lu8g_setFontRefHeightText( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
u8g_SetFontRefHeightText
(
lud
);
u8g_SetFontRefHeightText
(
LU8G
);
return
0
;
return
0
;
}
}
...
@@ -146,7 +156,7 @@ static int lu8g_setDefaultBackgroundColor( lua_State *L )
...
@@ -146,7 +156,7 @@ static int lu8g_setDefaultBackgroundColor( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
u8g_SetDefaultBackgroundColor
(
lud
);
u8g_SetDefaultBackgroundColor
(
LU8G
);
return
0
;
return
0
;
}
}
...
@@ -159,7 +169,7 @@ static int lu8g_setDefaultForegroundColor( lua_State *L )
...
@@ -159,7 +169,7 @@ static int lu8g_setDefaultForegroundColor( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
u8g_SetDefaultForegroundColor
(
lud
);
u8g_SetDefaultForegroundColor
(
LU8G
);
return
0
;
return
0
;
}
}
...
@@ -172,7 +182,7 @@ static int lu8g_setFontPosBaseline( lua_State *L )
...
@@ -172,7 +182,7 @@ static int lu8g_setFontPosBaseline( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
u8g_SetFontPosBaseline
(
lud
);
u8g_SetFontPosBaseline
(
LU8G
);
return
0
;
return
0
;
}
}
...
@@ -185,7 +195,7 @@ static int lu8g_setFontPosBottom( lua_State *L )
...
@@ -185,7 +195,7 @@ static int lu8g_setFontPosBottom( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
u8g_SetFontPosBottom
(
lud
);
u8g_SetFontPosBottom
(
LU8G
);
return
0
;
return
0
;
}
}
...
@@ -198,7 +208,7 @@ static int lu8g_setFontPosCenter( lua_State *L )
...
@@ -198,7 +208,7 @@ static int lu8g_setFontPosCenter( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
u8g_SetFontPosCenter
(
lud
);
u8g_SetFontPosCenter
(
LU8G
);
return
0
;
return
0
;
}
}
...
@@ -211,7 +221,7 @@ static int lu8g_setFontPosTop( lua_State *L )
...
@@ -211,7 +221,7 @@ static int lu8g_setFontPosTop( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
u8g_SetFontPosTop
(
lud
);
u8g_SetFontPosTop
(
LU8G
);
return
0
;
return
0
;
}
}
...
@@ -224,7 +234,7 @@ static int lu8g_getFontAscent( lua_State *L )
...
@@ -224,7 +234,7 @@ static int lu8g_getFontAscent( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
lua_pushinteger
(
L
,
u8g_GetFontAscent
(
lud
)
);
lua_pushinteger
(
L
,
u8g_GetFontAscent
(
LU8G
)
);
return
1
;
return
1
;
}
}
...
@@ -237,7 +247,7 @@ static int lu8g_getFontDescent( lua_State *L )
...
@@ -237,7 +247,7 @@ static int lu8g_getFontDescent( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
lua_pushinteger
(
L
,
u8g_GetFontDescent
(
lud
)
);
lua_pushinteger
(
L
,
u8g_GetFontDescent
(
LU8G
)
);
return
1
;
return
1
;
}
}
...
@@ -250,7 +260,7 @@ static int lu8g_getFontLineSpacing( lua_State *L )
...
@@ -250,7 +260,7 @@ static int lu8g_getFontLineSpacing( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
lua_pushinteger
(
L
,
u8g_GetFontLineSpacing
(
lud
)
);
lua_pushinteger
(
L
,
u8g_GetFontLineSpacing
(
LU8G
)
);
return
1
;
return
1
;
}
}
...
@@ -263,7 +273,7 @@ static int lu8g_getMode( lua_State *L )
...
@@ -263,7 +273,7 @@ static int lu8g_getMode( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
lua_pushinteger
(
L
,
u8g_GetMode
(
lud
)
);
lua_pushinteger
(
L
,
u8g_GetMode
(
LU8G
)
);
return
1
;
return
1
;
}
}
...
@@ -276,7 +286,7 @@ static int lu8g_setColorIndex( lua_State *L )
...
@@ -276,7 +286,7 @@ static int lu8g_setColorIndex( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
u8g_SetColorIndex
(
lud
,
luaL_checkinteger
(
L
,
2
)
);
u8g_SetColorIndex
(
LU8G
,
luaL_checkinteger
(
L
,
2
)
);
return
0
;
return
0
;
}
}
...
@@ -289,7 +299,7 @@ static int lu8g_getColorIndex( lua_State *L )
...
@@ -289,7 +299,7 @@ static int lu8g_getColorIndex( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
lua_pushinteger
(
L
,
u8g_GetColorIndex
(
lud
)
);
lua_pushinteger
(
L
,
u8g_GetColorIndex
(
LU8G
)
);
return
1
;
return
1
;
}
}
...
@@ -311,16 +321,16 @@ static int lu8g_generic_drawStr( lua_State *L, uint8_t rot )
...
@@ -311,16 +321,16 @@ static int lu8g_generic_drawStr( lua_State *L, uint8_t rot )
switch
(
rot
)
switch
(
rot
)
{
{
case
1
:
case
1
:
lua_pushinteger
(
L
,
u8g_DrawStr90
(
lud
,
args
[
0
],
args
[
1
],
s
)
);
lua_pushinteger
(
L
,
u8g_DrawStr90
(
LU8G
,
args
[
0
],
args
[
1
],
s
)
);
break
;
break
;
case
2
:
case
2
:
lua_pushinteger
(
L
,
u8g_DrawStr180
(
lud
,
args
[
0
],
args
[
1
],
s
)
);
lua_pushinteger
(
L
,
u8g_DrawStr180
(
LU8G
,
args
[
0
],
args
[
1
],
s
)
);
break
;
break
;
case
3
:
case
3
:
lua_pushinteger
(
L
,
u8g_DrawStr270
(
lud
,
args
[
0
],
args
[
1
],
s
)
);
lua_pushinteger
(
L
,
u8g_DrawStr270
(
LU8G
,
args
[
0
],
args
[
1
],
s
)
);
break
;
break
;
default:
default:
lua_pushinteger
(
L
,
u8g_DrawStr
(
lud
,
args
[
0
],
args
[
1
],
s
)
);
lua_pushinteger
(
L
,
u8g_DrawStr
(
LU8G
,
args
[
0
],
args
[
1
],
s
)
);
break
;
break
;
}
}
...
@@ -371,7 +381,7 @@ static int lu8g_drawLine( lua_State *L )
...
@@ -371,7 +381,7 @@ static int lu8g_drawLine( lua_State *L )
u8g_uint_t
args
[
4
];
u8g_uint_t
args
[
4
];
lu8g_get_int_args
(
L
,
2
,
4
,
args
);
lu8g_get_int_args
(
L
,
2
,
4
,
args
);
u8g_DrawLine
(
lud
,
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
]
);
u8g_DrawLine
(
LU8G
,
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
]
);
return
0
;
return
0
;
}
}
...
@@ -387,7 +397,7 @@ static int lu8g_drawTriangle( lua_State *L )
...
@@ -387,7 +397,7 @@ static int lu8g_drawTriangle( lua_State *L )
u8g_uint_t
args
[
6
];
u8g_uint_t
args
[
6
];
lu8g_get_int_args
(
L
,
2
,
6
,
args
);
lu8g_get_int_args
(
L
,
2
,
6
,
args
);
u8g_DrawTriangle
(
lud
,
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
],
args
[
4
],
args
[
5
]
);
u8g_DrawTriangle
(
LU8G
,
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
],
args
[
4
],
args
[
5
]
);
return
0
;
return
0
;
}
}
...
@@ -403,7 +413,7 @@ static int lu8g_drawBox( lua_State *L )
...
@@ -403,7 +413,7 @@ static int lu8g_drawBox( lua_State *L )
u8g_uint_t
args
[
4
];
u8g_uint_t
args
[
4
];
lu8g_get_int_args
(
L
,
2
,
4
,
args
);
lu8g_get_int_args
(
L
,
2
,
4
,
args
);
u8g_DrawBox
(
lud
,
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
]
);
u8g_DrawBox
(
LU8G
,
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
]
);
return
0
;
return
0
;
}
}
...
@@ -419,7 +429,7 @@ static int lu8g_drawRBox( lua_State *L )
...
@@ -419,7 +429,7 @@ static int lu8g_drawRBox( lua_State *L )
u8g_uint_t
args
[
5
];
u8g_uint_t
args
[
5
];
lu8g_get_int_args
(
L
,
2
,
5
,
args
);
lu8g_get_int_args
(
L
,
2
,
5
,
args
);
u8g_DrawRBox
(
lud
,
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
],
args
[
4
]
);
u8g_DrawRBox
(
LU8G
,
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
],
args
[
4
]
);
return
0
;
return
0
;
}
}
...
@@ -435,7 +445,7 @@ static int lu8g_drawFrame( lua_State *L )
...
@@ -435,7 +445,7 @@ static int lu8g_drawFrame( lua_State *L )
u8g_uint_t
args
[
4
];
u8g_uint_t
args
[
4
];
lu8g_get_int_args
(
L
,
2
,
4
,
args
);
lu8g_get_int_args
(
L
,
2
,
4
,
args
);
u8g_DrawFrame
(
lud
,
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
]
);
u8g_DrawFrame
(
LU8G
,
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
]
);
return
0
;
return
0
;
}
}
...
@@ -451,7 +461,7 @@ static int lu8g_drawRFrame( lua_State *L )
...
@@ -451,7 +461,7 @@ static int lu8g_drawRFrame( lua_State *L )
u8g_uint_t
args
[
5
];
u8g_uint_t
args
[
5
];
lu8g_get_int_args
(
L
,
2
,
5
,
args
);
lu8g_get_int_args
(
L
,
2
,
5
,
args
);
u8g_DrawRFrame
(
lud
,
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
],
args
[
4
]
);
u8g_DrawRFrame
(
LU8G
,
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
],
args
[
4
]
);
return
0
;
return
0
;
}
}
...
@@ -469,7 +479,7 @@ static int lu8g_drawDisc( lua_State *L )
...
@@ -469,7 +479,7 @@ static int lu8g_drawDisc( lua_State *L )
u8g_uint_t
opt
=
luaL_optinteger
(
L
,
(
1
+
3
)
+
1
,
U8G_DRAW_ALL
);
u8g_uint_t
opt
=
luaL_optinteger
(
L
,
(
1
+
3
)
+
1
,
U8G_DRAW_ALL
);
u8g_DrawDisc
(
lud
,
args
[
0
],
args
[
1
],
args
[
2
],
opt
);
u8g_DrawDisc
(
LU8G
,
args
[
0
],
args
[
1
],
args
[
2
],
opt
);
return
0
;
return
0
;
}
}
...
@@ -487,7 +497,7 @@ static int lu8g_drawCircle( lua_State *L )
...
@@ -487,7 +497,7 @@ static int lu8g_drawCircle( lua_State *L )
u8g_uint_t
opt
=
luaL_optinteger
(
L
,
(
1
+
3
)
+
1
,
U8G_DRAW_ALL
);
u8g_uint_t
opt
=
luaL_optinteger
(
L
,
(
1
+
3
)
+
1
,
U8G_DRAW_ALL
);
u8g_DrawCircle
(
lud
,
args
[
0
],
args
[
1
],
args
[
2
],
opt
);
u8g_DrawCircle
(
LU8G
,
args
[
0
],
args
[
1
],
args
[
2
],
opt
);
return
0
;
return
0
;
}
}
...
@@ -505,7 +515,7 @@ static int lu8g_drawEllipse( lua_State *L )
...
@@ -505,7 +515,7 @@ static int lu8g_drawEllipse( lua_State *L )
u8g_uint_t
opt
=
luaL_optinteger
(
L
,
(
1
+
4
)
+
1
,
U8G_DRAW_ALL
);
u8g_uint_t
opt
=
luaL_optinteger
(
L
,
(
1
+
4
)
+
1
,
U8G_DRAW_ALL
);
u8g_DrawEllipse
(
lud
,
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
],
opt
);
u8g_DrawEllipse
(
LU8G
,
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
],
opt
);
return
0
;
return
0
;
}
}
...
@@ -523,7 +533,7 @@ static int lu8g_drawFilledEllipse( lua_State *L )
...
@@ -523,7 +533,7 @@ static int lu8g_drawFilledEllipse( lua_State *L )
u8g_uint_t
opt
=
luaL_optinteger
(
L
,
(
1
+
4
)
+
1
,
U8G_DRAW_ALL
);
u8g_uint_t
opt
=
luaL_optinteger
(
L
,
(
1
+
4
)
+
1
,
U8G_DRAW_ALL
);
u8g_DrawFilledEllipse
(
lud
,
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
],
opt
);
u8g_DrawFilledEllipse
(
LU8G
,
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
],
opt
);
return
0
;
return
0
;
}
}
...
@@ -539,7 +549,7 @@ static int lu8g_drawPixel( lua_State *L )
...
@@ -539,7 +549,7 @@ static int lu8g_drawPixel( lua_State *L )
u8g_uint_t
args
[
2
];
u8g_uint_t
args
[
2
];
lu8g_get_int_args
(
L
,
2
,
2
,
args
);
lu8g_get_int_args
(
L
,
2
,
2
,
args
);
u8g_DrawPixel
(
lud
,
args
[
0
],
args
[
1
]
);
u8g_DrawPixel
(
LU8G
,
args
[
0
],
args
[
1
]
);
return
0
;
return
0
;
}
}
...
@@ -555,7 +565,7 @@ static int lu8g_drawHLine( lua_State *L )
...
@@ -555,7 +565,7 @@ static int lu8g_drawHLine( lua_State *L )
u8g_uint_t
args
[
3
];
u8g_uint_t
args
[
3
];
lu8g_get_int_args
(
L
,
2
,
3
,
args
);
lu8g_get_int_args
(
L
,
2
,
3
,
args
);
u8g_DrawHLine
(
lud
,
args
[
0
],
args
[
1
],
args
[
2
]
);
u8g_DrawHLine
(
LU8G
,
args
[
0
],
args
[
1
],
args
[
2
]
);
return
0
;
return
0
;
}
}
...
@@ -571,7 +581,7 @@ static int lu8g_drawVLine( lua_State *L )
...
@@ -571,7 +581,7 @@ static int lu8g_drawVLine( lua_State *L )
u8g_uint_t
args
[
3
];
u8g_uint_t
args
[
3
];
lu8g_get_int_args
(
L
,
2
,
3
,
args
);
lu8g_get_int_args
(
L
,
2
,
3
,
args
);
u8g_DrawVLine
(
lud
,
args
[
0
],
args
[
1
],
args
[
2
]
);
u8g_DrawVLine
(
LU8G
,
args
[
0
],
args
[
1
],
args
[
2
]
);
return
0
;
return
0
;
}
}
...
@@ -591,7 +601,7 @@ static int lu8g_drawXBM( lua_State *L )
...
@@ -591,7 +601,7 @@ static int lu8g_drawXBM( lua_State *L )
if
(
xbm_data
==
NULL
)
if
(
xbm_data
==
NULL
)
return
0
;
return
0
;
u8g_DrawXBM
(
lud
,
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
],
(
const
uint8_t
*
)
xbm_data
);
u8g_DrawXBM
(
LU8G
,
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
],
(
const
uint8_t
*
)
xbm_data
);
return
0
;
return
0
;
}
}
...
@@ -611,7 +621,7 @@ static int lu8g_drawBitmap( lua_State *L )
...
@@ -611,7 +621,7 @@ static int lu8g_drawBitmap( lua_State *L )
if
(
bm_data
==
NULL
)
if
(
bm_data
==
NULL
)
return
0
;
return
0
;
u8g_DrawBitmap
(
lud
,
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
],
(
const
uint8_t
*
)
bm_data
);
u8g_DrawBitmap
(
LU8G
,
args
[
0
],
args
[
1
],
args
[
2
],
args
[
3
],
(
const
uint8_t
*
)
bm_data
);
return
0
;
return
0
;
}
}
...
@@ -624,7 +634,7 @@ static int lu8g_setScale2x2( lua_State *L )
...
@@ -624,7 +634,7 @@ static int lu8g_setScale2x2( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
u8g_SetScale2x2
(
lud
);
u8g_SetScale2x2
(
LU8G
);
return
0
;
return
0
;
}
}
...
@@ -637,7 +647,7 @@ static int lu8g_undoScale( lua_State *L )
...
@@ -637,7 +647,7 @@ static int lu8g_undoScale( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
u8g_UndoScale
(
lud
);
u8g_UndoScale
(
LU8G
);
return
0
;
return
0
;
}
}
...
@@ -650,7 +660,7 @@ static int lu8g_firstPage( lua_State *L )
...
@@ -650,7 +660,7 @@ static int lu8g_firstPage( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
u8g_FirstPage
(
lud
);
u8g_FirstPage
(
LU8G
);
return
0
;
return
0
;
}
}
...
@@ -663,7 +673,7 @@ static int lu8g_nextPage( lua_State *L )
...
@@ -663,7 +673,7 @@ static int lu8g_nextPage( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
lua_pushboolean
(
L
,
u8g_NextPage
(
lud
)
);
lua_pushboolean
(
L
,
u8g_NextPage
(
LU8G
)
);
return
1
;
return
1
;
}
}
...
@@ -676,7 +686,7 @@ static int lu8g_sleepOn( lua_State *L )
...
@@ -676,7 +686,7 @@ static int lu8g_sleepOn( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
u8g_SleepOn
(
lud
);
u8g_SleepOn
(
LU8G
);
return
0
;
return
0
;
}
}
...
@@ -689,7 +699,7 @@ static int lu8g_sleepOff( lua_State *L )
...
@@ -689,7 +699,7 @@ static int lu8g_sleepOff( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
u8g_SleepOff
(
lud
);
u8g_SleepOff
(
LU8G
);
return
0
;
return
0
;
}
}
...
@@ -702,7 +712,7 @@ static int lu8g_setRot90( lua_State *L )
...
@@ -702,7 +712,7 @@ static int lu8g_setRot90( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
u8g_SetRot90
(
lud
);
u8g_SetRot90
(
LU8G
);
return
0
;
return
0
;
}
}
...
@@ -715,7 +725,7 @@ static int lu8g_setRot180( lua_State *L )
...
@@ -715,7 +725,7 @@ static int lu8g_setRot180( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
u8g_SetRot180
(
lud
);
u8g_SetRot180
(
LU8G
);
return
0
;
return
0
;
}
}
...
@@ -728,7 +738,7 @@ static int lu8g_setRot270( lua_State *L )
...
@@ -728,7 +738,7 @@ static int lu8g_setRot270( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
u8g_SetRot270
(
lud
);
u8g_SetRot270
(
LU8G
);
return
0
;
return
0
;
}
}
...
@@ -741,7 +751,7 @@ static int lu8g_undoRotation( lua_State *L )
...
@@ -741,7 +751,7 @@ static int lu8g_undoRotation( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
u8g_UndoRotation
(
lud
);
u8g_UndoRotation
(
LU8G
);
return
0
;
return
0
;
}
}
...
@@ -754,7 +764,7 @@ static int lu8g_getWidth( lua_State *L )
...
@@ -754,7 +764,7 @@ static int lu8g_getWidth( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
lua_pushinteger
(
L
,
u8g_GetWidth
(
lud
)
);
lua_pushinteger
(
L
,
u8g_GetWidth
(
LU8G
)
);
return
1
;
return
1
;
}
}
...
@@ -767,7 +777,7 @@ static int lu8g_getHeight( lua_State *L )
...
@@ -767,7 +777,7 @@ static int lu8g_getHeight( lua_State *L )
if
((
lud
=
get_lud
(
L
))
==
NULL
)
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
return
0
;
lua_pushinteger
(
L
,
u8g_GetHeight
(
lud
)
);
lua_pushinteger
(
L
,
u8g_GetHeight
(
LU8G
)
);
return
1
;
return
1
;
}
}
...
@@ -906,9 +916,26 @@ uint8_t u8g_com_esp8266_ssd_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, voi
...
@@ -906,9 +916,26 @@ uint8_t u8g_com_esp8266_ssd_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, voi
// device destructor
static
int
lu8g_close_display
(
lua_State
*
L
)
{
lu8g_userdata_t
*
lud
;
if
((
lud
=
get_lud
(
L
))
==
NULL
)
return
0
;
// free up allocated page buffer
if
(
lud
->
pb
.
buf
!=
NULL
)
c_free
(
lud
->
pb
.
buf
);
return
0
;
}
// device constructors
// device constructors
// Lua: speed = u8g.ssd1306_128x64_i2c( i2c_addr )
uint8_t
u8g_dev_ssd1306_128x64_fn
(
u8g_t
*
u8g
,
u8g_dev_t
*
dev
,
uint8_t
msg
,
void
*
arg
);
// Lua: object = u8g.ssd1306_128x64_i2c( i2c_addr )
static
int
lu8g_ssd1306_128x64_i2c
(
lua_State
*
L
)
static
int
lu8g_ssd1306_128x64_i2c
(
lua_State
*
L
)
{
{
unsigned
addr
=
luaL_checkinteger
(
L
,
1
);
unsigned
addr
=
luaL_checkinteger
(
L
,
1
);
...
@@ -918,9 +945,32 @@ static int lu8g_ssd1306_128x64_i2c( lua_State *L )
...
@@ -918,9 +945,32 @@ static int lu8g_ssd1306_128x64_i2c( lua_State *L )
lu8g_userdata_t
*
lud
=
(
lu8g_userdata_t
*
)
lua_newuserdata
(
L
,
sizeof
(
lu8g_userdata_t
)
);
lu8g_userdata_t
*
lud
=
(
lu8g_userdata_t
*
)
lua_newuserdata
(
L
,
sizeof
(
lu8g_userdata_t
)
);
lud
->
i2c_addr
=
(
uint8_t
)
addr
;
lud
->
u8g
.
i2c_addr
=
(
uint8_t
)
addr
;
u8g_InitI2C
(
lud
,
&
u8g_dev_ssd1306_128x64_i2c
,
U8G_I2C_OPT_NONE
);
// We don't use the pre-defined device structure for u8g_dev_ssd1306_128x64_i2c here
// Reason: linking the pre-defined structures allocates RAM for the device/comm structure
// *before* the display is constructed (especially the page buffers)
// this consumes heap even when the device is not used at all
#if 1
// build device entry
lud
->
dev
.
dev_fn
=
u8g_dev_ssd1306_128x64_fn
;
lud
->
dev
.
dev_mem
=
&
(
lud
->
pb
);
lud
->
dev
.
com_fn
=
u8g_com_esp8266_ssd_i2c_fn
;
// then allocate and populate page buffer
lud
->
pb
.
width
=
128
;
// WIDTH in u8g_dev_ssd1306_128x64.c
if
((
lud
->
pb
.
buf
=
(
void
*
)
c_zalloc
(
lud
->
pb
.
width
))
==
NULL
)
return
luaL_error
(
L
,
"out of memory"
);
lud
->
pb
.
p
.
page_height
=
8
;
// PAGE_HEIGHT in u8g_dev_ssd1306_128x64.c
lud
->
pb
.
p
.
total_height
=
64
;
// HEIGHT in u8g_dev_ssd1306_128x64.c
lud
->
pb
.
p
.
page_y0
=
0
;
lud
->
pb
.
p
.
page_y1
=
0
;
lud
->
pb
.
p
.
page
=
0
;
u8g_InitI2C
(
LU8G
,
&
(
lud
->
dev
),
U8G_I2C_OPT_NONE
);
#else
u8g_InitI2C
(
LU8G
,
u8g_dev_ssd1306_128x64_i2c
,
U8G_I2C_OPT_NONE
);
#endif
// set its metatable
// set its metatable
...
@@ -985,6 +1035,7 @@ static const LUA_REG_TYPE lu8g_display_map[] =
...
@@ -985,6 +1035,7 @@ static const LUA_REG_TYPE lu8g_display_map[] =
{
LSTRKEY
(
"undoRotation"
),
LFUNCVAL
(
lu8g_undoRotation
)
},
{
LSTRKEY
(
"undoRotation"
),
LFUNCVAL
(
lu8g_undoRotation
)
},
{
LSTRKEY
(
"getWidth"
),
LFUNCVAL
(
lu8g_getWidth
)
},
{
LSTRKEY
(
"getWidth"
),
LFUNCVAL
(
lu8g_getWidth
)
},
{
LSTRKEY
(
"getHeight"
),
LFUNCVAL
(
lu8g_getHeight
)
},
{
LSTRKEY
(
"getHeight"
),
LFUNCVAL
(
lu8g_getHeight
)
},
{
LSTRKEY
(
"__gc"
),
LFUNCVAL
(
lu8g_close_display
)
},
#if LUA_OPTIMIZE_MEMORY > 0
#if LUA_OPTIMIZE_MEMORY > 0
{
LSTRKEY
(
"__index"
),
LROVAL
(
lu8g_display_map
)
},
{
LSTRKEY
(
"__index"
),
LROVAL
(
lu8g_display_map
)
},
#endif
#endif
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment