diff options
author | David Barksdale <amatus@amatus.name> | 2016-03-28 20:49:41 -0500 |
---|---|---|
committer | David Barksdale <amatus@amatus.name> | 2016-03-28 20:49:41 -0500 |
commit | 0bbf71ab7622f96fc58520a70e2ba37603cf35a5 (patch) | |
tree | df32290b46b511666a87fdb1882b1af280a0ce9c /laser-tag software/main.c | |
parent | f698bb9ca7e4e33b4d3e1282011f26a8384b5c17 (diff) |
Select button does image scrolling
Diffstat (limited to 'laser-tag software/main.c')
-rwxr-xr-x | laser-tag software/main.c | 39 |
1 files changed, 32 insertions, 7 deletions
diff --git a/laser-tag software/main.c b/laser-tag software/main.c index 85ecd04..5a6cd6c 100755 --- a/laser-tag software/main.c +++ b/laser-tag software/main.c @@ -29,6 +29,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include "epaper.h" #include "fsl_clock_manager.h" #include "fsl_cmp_driver.h" #include "fsl_dac_driver.h" @@ -44,6 +45,25 @@ //////////////////////////// +// Graphics resources + +#include "aha.xbm" +#include "threatbutt.xbm" +#include "my_name_is.xbm" +#include "longhorn_lockpicking.xbm" + +static const uint8_t *images[] = { + aha_bits, + longhorn_lockpicking_bits, + my_name_is_bits, + threatbutt_bits, +}; +static const int image_count = sizeof images / sizeof *images; +static int current_image = 0; +static int cue_next_image = 0; + + +//////////////////////////// // A bunch of config structs /* Configuration for enter VLPR mode. Core clock = 4MHz. */ @@ -235,10 +255,6 @@ static flexio_shifter_config_t g_shifterConfig = { }; -extern void EPD_Init(); -extern int EPD_Draw(); -extern void EPD_Deinit(); - /////// // Code @@ -380,6 +396,9 @@ void PORTA_IRQHandler(void) if (!GPIO_DRV_ReadPinInput(g_switchDown.pinName)) { g_txBuff[0] = '!'; } + if (!GPIO_DRV_ReadPinInput(g_switchSelect.pinName)) { + cue_next_image = 1; + } } static void lpuartTxCallback(uint32_t instance, void *lpuartState) @@ -528,8 +547,8 @@ int main (void) /* Init e-paper display */ EPD_Init(); - /* Draw something */ - int ret = EPD_Draw(); + /* Throw up first image */ + int ret = EPD_Draw(NULL, images[current_image]); if (-1 == ret) { led(0xff, 0x00, 0x00); } else if (-2 == ret) { @@ -542,10 +561,16 @@ int main (void) blank_led = 30; /* Deinit so we can mess around on the bus pirate */ - EPD_Deinit(); + //EPD_Deinit(); /* We're done, everything else is triggered through interrupts */ for(;;) { + if (cue_next_image) { + int old_image = current_image; + current_image = (current_image + 1) % image_count; + EPD_Draw(images[old_image], images[current_image]); + cue_next_image = 0; + } #ifndef DEBUG SMC_HAL_SetMode(SMC, &g_idlePowerMode); #endif |