ibutton app, only read mode
This commit is contained in:
		
							parent
							
								
									a8fdbc6376
								
							
						
					
					
						commit
						799eefd754
					
				| @ -24,6 +24,7 @@ BUILD_VIBRO_DEMO = 1 | ||||
| BUILD_SD_TEST = 1 | ||||
| BUILD_GPIO_DEMO = 1 | ||||
| BUILD_MUSIC_PLAYER = 1 | ||||
| BUILD_IBUTTON = 1 | ||||
| endif | ||||
| 
 | ||||
| APP_NFC ?= 0 | ||||
| @ -258,6 +259,17 @@ CFLAGS		+= -DBUILD_MUSIC_PLAYER | ||||
| C_SOURCES	+= $(wildcard $(APP_DIR)/music-player/*.c) | ||||
| endif | ||||
| 
 | ||||
| APP_IBUTTON ?= 0 | ||||
| ifeq ($(APP_IBUTTON), 1) | ||||
| CFLAGS		+= -DAPP_IBUTTON | ||||
| BUILD_IBUTTON = 1 | ||||
| endif | ||||
| BUILD_IBUTTON ?= 0 | ||||
| ifeq ($(BUILD_IBUTTON), 1) | ||||
| CFLAGS		+= -DBUILD_IBUTTON | ||||
| CPP_SOURCES	+= $(wildcard $(APP_DIR)/ibutton/ibutton.cpp) | ||||
| endif | ||||
| 
 | ||||
| # device drivers
 | ||||
| 
 | ||||
| APP_GUI	?= 0 | ||||
|  | ||||
| @ -4,8 +4,12 @@ | ||||
| 
 | ||||
| // start app
 | ||||
| void AppiButton::run() { | ||||
|     acquire_state(); | ||||
|     mode[0] = new AppiButtonModeDallasRead(this); | ||||
|     mode[1] = new AppiButtonModeDallasEmulate(this); | ||||
|     release_state(); | ||||
| 
 | ||||
|     switch_to_mode(0); | ||||
| 
 | ||||
|     // create pin
 | ||||
|     GpioPin red_led = led_gpio[0]; | ||||
| @ -94,6 +98,14 @@ void AppiButton::decrease_mode() { | ||||
|     release_state(); | ||||
| } | ||||
| 
 | ||||
| void AppiButton::switch_to_mode(uint8_t mode_index) { | ||||
|     acquire_state(); | ||||
|     mode[state.mode_index]->release(); | ||||
|     state.mode_index = mode_index; | ||||
|     mode[state.mode_index]->acquire(); | ||||
|     release_state(); | ||||
| } | ||||
| 
 | ||||
| // app enter function
 | ||||
| extern "C" void app_ibutton(void* p) { | ||||
|     AppiButton* app = new AppiButton(); | ||||
|  | ||||
| @ -8,7 +8,8 @@ typedef uint8_t event_t; | ||||
| class AppiButtonState { | ||||
| public: | ||||
|     // state data
 | ||||
|     uint8_t dallas_address[8] = {0x01, 0xFD, 0x0E, 0x84, 0x01, 0x00, 0x00, 0xDB}; | ||||
|     // test key = {0x01, 0xFD, 0x0E, 0x84, 0x01, 0x00, 0x00, 0xDB};
 | ||||
|     uint8_t dallas_address[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; | ||||
|     uint8_t mode_index; | ||||
| 
 | ||||
|     // state initializer
 | ||||
| @ -51,4 +52,5 @@ public: | ||||
| 
 | ||||
|     void increase_mode(); | ||||
|     void decrease_mode(); | ||||
|     void switch_to_mode(uint8_t mode_index); | ||||
| }; | ||||
| @ -25,19 +25,19 @@ public: | ||||
| 
 | ||||
| void AppiButtonModeDallasEmulate::event(AppiButtonEvent* event, AppiButtonState* state) { | ||||
|     if(event->type == AppiButtonEvent::EventTypeTick) { | ||||
|         acquire(); | ||||
|         if(onewire_slave->emulate(state->dallas_address, 8)) { | ||||
|         app->blink_red(); | ||||
|         /*if(onewire_slave->emulate(state->dallas_address, 8)) {
 | ||||
|             app->blink_green(); | ||||
|         } else { | ||||
|              | ||||
|         } | ||||
|         }*/ | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void AppiButtonModeDallasEmulate::render(CanvasApi* canvas, AppiButtonState* state) { | ||||
|     canvas->set_font(canvas, FontSecondary); | ||||
|     canvas->draw_str(canvas, 2, 25, "< dallas emulate"); | ||||
|     canvas->draw_str(canvas, 2, 37, "give me domophone"); | ||||
|     canvas->draw_str(canvas, 2, 37, "unimplemented"); | ||||
|     { | ||||
|         char buf[24]; | ||||
|         sprintf( | ||||
|  | ||||
| @ -129,8 +129,7 @@ bool OneWireGpioSlave::receiveBit(void) { | ||||
|     // wait while bus is HIGH
 | ||||
|     OneWiteTimeType time = OneWireEmulateTiming::SLOT_MAX[overdrive_mode]; | ||||
|     time = wait_while_gpio(time, true); | ||||
|     if (time == 0) | ||||
|     { | ||||
|     if(time == 0) { | ||||
|         printf("RESET_IN_PROGRESS\n"); | ||||
|         return false; | ||||
|     } | ||||
| @ -144,8 +143,7 @@ bool OneWireGpioSlave::receiveBit(void) { | ||||
|     // wait while bus is LOW
 | ||||
|     time = OneWireEmulateTiming::MSG_HIGH_TIMEOUT; | ||||
|     time = wait_while_gpio(time, false); | ||||
|     if (time == 0) | ||||
|     { | ||||
|     if(time == 0) { | ||||
|         printf("TIMEOUT_HIGH\n"); | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 DrZlo13
						DrZlo13