Previous day | Jump to hour: 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | Next day

Seconds: Show Hide | Joins: Show Hide | View raw
Font: Serif Sans-Serif Monospace | Size: Small Medium Large

Click in the nick column to highlight everything a person has said.
The Logo icon identifies that the person is a core developer (has commit access).

#rockbox log for 2017-02-04

00:01:21 Quit alexweissman (Remote host closed the connection)
00:01:52BilgusI was under the impression I could force it to the very end of the file or am I mistaken?
00:02:43pamauryyes, if you change all linker files
00:04:16Bilgusah ok
00:04:37pamauryyou need to mark the instanciation of the structure with something like __attribute__((".eof")) [I'm making up a name] and then the linker file of each target need to ensure this section (.eof) is at the very end of the binary
00:04:51pamauryit's not necessarily very complicated to do, just needs to be careful
00:05:44 Quit scorche (Disconnected by services)
00:05:48 Join scorche` [0] (~scorche@rockbox/administrator/scorche)
00:09:06 Quit Senji (Ping timeout: 240 seconds)
00:15:34pamauryBilgus: maybe sending an email to the mailing list would be a good idea, to gather feedback and maybe ideas
00:15:53BilgusI just signed up to it today
00:16:15BilgusHaven't gotten an activated mail as of yet
00:17:16 Join shh [0] (~me@145.132.155.235)
00:18:12pamauryBilgus: if you don't get it soon, send an email to Zagor
00:19:00 Join scorche [0] (~scorche@rockbox/administrator/scorche)
00:20:46 Quit scorche` (Ping timeout: 240 seconds)
00:21:00Bilgusk
00:21:46 Quit shh (Ping timeout: 240 seconds)
00:25:32 Quit scorche (Ping timeout: 264 seconds)
00:46:09 Quit mutnai (Quit: Page closed)
00:46:47 Join chrisjj [0] (5001d87b@gateway/web/freenode/ip.80.1.216.123)
00:46:51 Nick zoid is now known as TRUMPbot (~zoid@unaffiliated/taxationistheft)
00:47:15 Nick TRUMPbot is now known as zoid (~zoid@unaffiliated/taxationistheft)
00:47:42 Nick zoid is now known as EagleBot (~zoid@unaffiliated/taxationistheft)
00:47:52 Nick EagleBot is now known as zoid (~zoid@unaffiliated/taxationistheft)
00:49:43 Quit lebellium (Quit: ChatZilla 0.9.93 [Firefox 51.0.1/20170125094131])
00:49:57 Nick zoid is now known as taxationistheft (~zoid@unaffiliated/taxationistheft)
00:50:17 Nick taxationistheft is now known as zoid (~zoid@unaffiliated/taxationistheft)
00:56:26***Saving seen data "./dancer.seen"
01:00
01:01:34 Join scorche [0] (~scorche@rockbox/administrator/scorche)
01:19:20 Quit pamaury (Ping timeout: 258 seconds)
01:26:56 Quit xorly (Ping timeout: 245 seconds)
01:28:26 Join Scyther [0] (~Anna@104.200.153.96)
01:31:21 Quit PurlingNayuki (Ping timeout: 252 seconds)
01:34:34 Join ffurrywol [0] (~randyg@70-6-147-73.pools.spcsdns.net)
01:36:02 Quit furrywolf (Disconnected by services)
01:36:06 Nick ffurrywol is now known as furrywolf (~randyg@70-6-147-73.pools.spcsdns.net)
01:45:27 Quit amayer (Quit: Leaving)
01:50:46 Quit ZincAlloy (Quit: Leaving.)
01:53:51 Quit michaelni (Quit: Leaving)
02:00
02:00:02 Join Link8 [0] (~me@86.85.176.166)
02:00:16 Quit Link8 (Client Quit)
02:03:08 Join alexweissman [0] (~alexweiss@c-68-51-123-75.hsd1.in.comcast.net)
02:06:09 Join michaelni [0] (~michael@213-47-41-20.cable.dynamic.surfer.at)
02:07:30 Quit girafe (Read error: Connection reset by peer)
02:11:59 Quit ender` (Quit: Religion is regarded by the common people as true, by the wise as false, and by the rulers as useful. — Seneca)
02:38:35 Quit amazoniantoad (Ping timeout: 255 seconds)
02:56:28***Saving seen data "./dancer.seen"
02:57:22 Quit Scyther (Quit: My Mac has gone to sleep. ZZZzzz…)
03:00
03:06:38 Quit saratoga (Quit: Page closed)
03:29:36 Join PurlingNayuki [0] (~Thunderbi@113.82.116.170)
03:33:52 Quit PurlingNayuki (Ping timeout: 258 seconds)
03:45:23 Join Strife1989 [0] (~quassel@adsl-98-80-195-3.mcn.bellsouth.net)
03:47:14 Quit Strife89 (Ping timeout: 256 seconds)
04:00
04:01:14 Join hunterleo [0] (0e7ff80d@gateway/web/freenode/ip.14.127.248.13)
04:08:52hunterleohelp
04:09:01__builtinhey hunterleo
04:09:13__builtinnice seeing you here :)
04:09:19hunterleoHi Builtin
04:10:17hunterleoI don't know how to contact pamaury. Can I find he here?
04:10:29__builtinhe's not around right now
04:11:01__builtinI assume you're here regarding the ROCKER?
04:12:39hunterleoYep. Do you know anyone regarding how to get it being ported?
04:13:01__builtinwell, pamaury's definitely the porting god around here
04:13:45hunterleoSure, everyone says so.
04:14:17__builtinwas there anything in particular you wanted to ask or say?
04:14:38hunterleoIs there anther way I can find him?
04:15:04madkwiat
04:16:02__builtinhunterleo: he reads the logs for this channel, I think
04:16:30__builtinso you can just say it here if that's okay
04:17:34hunterleoThank you very much. It's very kind of you!
04:19:41Bilgusdo you have a Rocker in your hands?
04:20:12__builtinwhat software does it currently run, and is there an easy way to execute custom code on it?
04:21:04BilgusWe are very extremely interested :P
04:21:13hunterleoYes, I have one.
04:22:36hunterleoWe hired ths same team which develop OS for FiiO, so the OS works like FiiO X1.
04:24:47BilgusDo we have specs?
04:25:37hunterleoWe couldn't execute custom code before porting it.
04:25:56madkhunterleo: pamaury is working on porting to X1 (maybe not currently)
04:25:57hunterleohttp://www.ingenic.com/en/?product/id/9.html check this out
04:27:26hunterleoFiiO X1 uses JZ4775. Rocker uses X1000.
04:27:47hunterleoJZ4775 is going to be discontinued.
04:28:30hunterleoThe new models of FiiO also use X1000.
04:50:21BilgusVert nice
04:50:27BilgusVery
04:56:30***Saving seen data "./dancer.seen"
04:59:53hunterleoThanks. Bilgus.
05:00
05:00:26BilgusWhats the expected price point USD of these?
05:56:48 Join JanC_ [0] (~janc@lugwv/member/JanC)
05:57:13 Quit MrZeus (Ping timeout: 255 seconds)
05:58:07 Nick JanC is now known as Guest8949 (~janc@lugwv/member/JanC)
05:58:07 Quit Guest8949 (Killed (sinisalo.freenode.net (Nickname regained by services)))
05:58:08 Nick JanC_ is now known as JanC (~janc@lugwv/member/JanC)
06:00
06:07:03 Quit smoke_fumus (Read error: Connection reset by peer)
06:08:15 Join PurlingNayuki [0] (~Thunderbi@113.82.116.170)
06:09:02 Quit TheSeven (Ping timeout: 245 seconds)
06:09:48 Join TheSeven [0] (~quassel@rockbox/developer/TheSeven)
06:26:18 Quit furrywolf (Ping timeout: 255 seconds)
06:56:31***Saving seen data "./dancer.seen"
06:56:58 Join ungali [0] (ungali@unaffiliated/ungali)
07:00
07:03:58hunterleoThe retail price is 60 USD now.
07:08:06 Quit Acou_Bass (Read error: Connection timed out)
07:09:52 Join Acou_Bass [0] (~Acou_Bass@host-89-241-250-248.as13285.net)
07:25:49 Quit Acou_Bass (Read error: Connection timed out)
07:37:55 Quit ungali (Quit: ungali)
07:52:03 Quit PurlingNayuki (Quit: PurlingNayuki)
07:54:55 Join goom [0] (~goom@cpe-66-25-153-174.satx.res.rr.com)
08:00
08:03:28 Quit hunterleo (Quit: Page closed)
08:04:18 Join PurlingNayuki [0] (~Thunderbi@113.82.116.170)
08:52:53 Join johnb3 [0] (~johnb2@p57B45CA3.dip0.t-ipconnect.de)
08:56:34***Saving seen data "./dancer.seen"
09:00
09:08:58 Quit jhMikeS (Ping timeout: 252 seconds)
09:09:21 Quit johnb3 (Ping timeout: 264 seconds)
09:48:35 Join ender` [0] (krneki@foo.eternallybored.org)
09:53:35 Join johnb3 [0] (~johnb2@p57B45CA3.dip0.t-ipconnect.de)
09:54:24 Quit johnb3 (Client Quit)
09:54:50 Join johnb2 [0] (~johnb2@p57B45CA3.dip0.t-ipconnect.de)
09:59:09 Quit johnb2 (Ping timeout: 240 seconds)
10:00
10:06:36 Join cc___ [0] (~ac@2001:910:113f:1:6a05:caff:fe1c:1627)
10:06:52dongswhat's rocker
10:30:21 Quit dys (Ping timeout: 255 seconds)
10:39:13 Join dys [0] (~dys@ip-109-40-0-171.web.vodafone.de)
10:39:28 Join johnb2 [0] (~johnb2@p57B45CA3.dip0.t-ipconnect.de)
10:51:43 Join pamaury [0] (~pamaury@rockbox/developer/pamaury)
10:56:38***Saving seen data "./dancer.seen"
10:58:42 Join xorly [0] (~xorly@ip-89-176-102-19.net.upcbroadband.cz)
10:59:42johnb2https://www.amazon.com/Bluetooth-Resolution-Lossless-Audiophile-Supports/dp/B01MZ50M0Y/ref=sr_1_1?ie=UTF8&qid=1486202232&sr=8-1&keywords=agptek+rocker
11:00
11:00:52pamauryah hunterloo is gone
11:01:58pamaurythe player looks cool
11:02:08pamauryif they can give the datasheet for the X1000 I can make the port
11:02:37pamauryI don't think ingenic has released the full programming manual of it
11:04:40 Quit goom (Quit: Leaving)
11:21:43 Join lebellium [0] (~chatzilla@89-93-177-91.hfc.dyn.abo.bbox.fr)
11:27:48lebelliumpamaury: on the forum he gave this link http://www.ingenic.com/en/?product/id/9.html and says there is everything we need there but http://www.ingenic.com/ftp://ftp.ingenic.com/SOC/X1000/X1000_DS.pdf gives 404 error...
11:29:53lebelliumthis works ftp://ftp.ingenic.com/SOC/X1000/X1000_DS.pdf
11:30:02lebellium46 pages datasheet
11:32:26pamaury46 pages is not enough, it's incomplete
11:33:40lebelliummaybe write it on the forums. I feel he'll be difficult to catch on the IRC due to the time zone
11:39:45 Join petur [0] (~petur@rockbox/developer/petur)
11:43:31 Quit johnb2 (Ping timeout: 252 seconds)
12:00
12:29:20pamaurysure
12:41:28 Join johnb2 [0] (~johnb2@p57B45CA3.dip0.t-ipconnect.de)
12:47:27 Quit StaticAmbience (Ping timeout: 240 seconds)
12:56:42***Saving seen data "./dancer.seen"
13:00
13:04:35 Join jb__ [0] (0245a0c8@gateway/web/freenode/ip.2.69.160.200)
13:06:43jb__pamaury: I'm looking at fuze+ button-driver and gestures. The debug screen detection of "flicks" seems OK to me in comparison to not having gestures at all.
13:08:22jb__pamaury: seems it would be fairly harmless to map hardware flicks to up/down/left/right buttons?
13:08:47 Quit petur (Ping timeout: 240 seconds)
13:09:11 Join MrZeus [0] (~MrZeus@2a02:c7f:7008:3400:fd52:2d4e:7071:2f11)
13:13:37 Join Malte__ [0] (d9eb20fe@gateway/web/freenode/ip.217.235.32.254)
13:15:47Malte__Hey guys! I'm currently removing the volume limit of my brother's Sony NW-A30 and it's looking good. But now I'm told to "reset the settings on the device to get the modification applied". What exactly does that mean?.
13:17:23 Quit xorly (Ping timeout: 260 seconds)
13:19:05pamauryjb__: it seems to me that the way the hardware detects flicks makes it really unnatural
13:19:36 Join gbl08ma [0] (~gbl08ma@ec2-52-23-151-127.compute-1.amazonaws.com)
13:20:14pamauryjust detecting flicks is useless unless it's really integrated in the UI. For example what it naturals is if you start scrolling the touchpad and it scrolls the list. It you just flick and it goes up/down one element, that's really useless
13:20:32jb__pamaury: agreed ...
13:20:32pamauryMalte__: find the factory reset menu entry
13:21:05Malte__How do I do that?
13:21:10jb__pamaury: but the work to implement visual feedback like that is more than I could "deal with"
13:21:22pamauryMalte__: look in the menus, nobody has a A30 around so we don't know ;)
13:21:30pamauryProbably in Settings
13:22:01jb__pamaury: and I keep instinctively flicking the screen touching various buttons.
13:23:12jb__pamaury: left/right makes sense with the rb ui. left enters a folder/submenu and right returns.
13:23:49pamauryjb__: I think some people had patches to implement a virtual "scroll wheel" on the touchpad, I haven't tried it but a virtual wheel doesn't seem natural to me. I know that the touchpad UI i suboptimal
13:23:59 Join StaticAmbience [0] (~Quassel@host217-42-102-36.range217-42.btcentralplus.com)
13:24:00Malte__Ok: Reset means that I have to reset the device to its factory settings, right?
13:24:35jb__flicking up/down is also easier than to find the right area on the pad for up/down
13:25:04pamauryMalte__: Sony changes the UI over time but on the E585, That's Settings > Common Settings > Format/restore, something like that
13:26:55pamauryjb__: yes but that means more code, and it's not trivial because it's context dependent
13:27:05pamauryie scrolling up/down doesn't make sense in all contexts
13:28:04Malte__Got that. Ok. Now I have to choose between "Reset all setting", "Format System storage", "Rebuild Database", "Restore to factory configuration"
13:28:10jb__pamaury: why not just map flick up to ~ BUTTON_UP?
13:28:21pamauryjb__: it will do not good
13:28:25lebelliumMalte__: reset all settings
13:28:36pamaurybecause one flick = one up, not useful in a list
13:30:01jb__pamaury: agreed ... but flick up right now means in order: BUTTON_DOWN, BUTTON_SELECT, BUTTON_UP
13:30:51pamauryyes, but given that we don't control flick detection (it's done by hardware), that would mean waiting to see if hardware see a flick, if not report other buttons
13:31:02pamaurythat introduces a unatural delay in the interface
13:31:16pamaurylike you press and wait 100ms before the action
13:31:45jb__pamaury: agreed. but the tap-gesture seems to be 300 ms. is it configurable?
13:31:49pamauryif you want to make it work at least a bit smoothly, you need to detect gesture in software
13:32:00pamauryit's partially configurable
13:32:34pamaurybut I still think software is the only way to go
13:32:59pamauryfor example maybe the driver can issue repeat events when you smoothly scroll your finger up
13:33:21jb__ok. the button driver only seems to return button-events
13:33:22Bilgusjb__ I tried gestures and even tried tweaking them what worked best was tweaking sensitivity and dead zone and using it as reqular buttons
13:33:37 Quit StaticAmbience (Ping timeout: 276 seconds)
13:34:24jb__Bilgus: ok.
13:34:32BilgusSadly I think what would work better is for the touch pad to select an action and the volume rocker to change it SAD.
13:35:53 Join johnb3 [0] (~johnb2@p57B45CA3.dip0.t-ipconnect.de)
13:35:59BilgusIt is rather unfortunate Sansa did that I wonder what kind of BOM savings they had
13:38:43jb__there is something called kinetic scroll for touchscreens. it seems to read touch-coordinates directly.
13:38:56pamauryyes but touch screen is completely different
13:39:01 Join xorly [0] (~xorly@ip-89-176-102-19.net.upcbroadband.cz)
13:39:09pamauryit assumes a touch... screen !
13:39:15pamaurycoordinates have to map 1 to 1
13:39:52pamauryfor touchpad you want a touchschreen-like mode that have kinetic scrolling but understand that the touchpad coordinate don't map to the screeb
13:39:59jb__the button driver could scale the pad coordinates.
13:40:16pamauryno that won't work well
13:40:31 Quit johnb3 (Ping timeout: 248 seconds)
13:40:54pamaurybecause touchscreen either work in up/down/left/right emulation, or real touch screen, ie you "click" on button
13:41:09pamauryyou can't click on a button you don't see with a touchpad
13:41:20jb__or the kinetic scroll could use coordinates relative to its source, like: x/MAX_TOUCH_X (?)
13:41:44jb__pamaury: I get it, but to use kinetic scroll to achieve visual feedback for swiping
13:41:53 Quit Malte__ (Quit: Page closed)
13:42:31pamauryyeah but what the point of kinetic scrolling if it ruins everything else ?
13:42:46jb__pamaury: the button driver only seems to return button events. I don't really understand how software gestures would work. would it simulate a series of button presses?
13:43:36jb__pamaury: I don't know the code well enough. I thought maybe it could be generalised to touchpads with lists
13:45:15pamauryI have to disappear for 15min, I can explain how it works, you'll understand why none of the existing code/approach can work
13:46:01jb__thanks!
13:49:43 Join paulk-blaze [0] (~paulk@37.164.35.21)
13:58:31 Quit paulk-blaze (Remote host closed the connection)
13:58:59 Join paulk-blaze [0] (~paulk@37.164.35.21)
14:00
14:05:18 Quit paulk-blaze (Ping timeout: 255 seconds)
14:09:18 Join markun [0] (~markun@rockbox/developer/markun)
14:10:08pamauryjb__: the way it works, the button only reports which key(s) are pressed at any given moment. For touchscreen it also reports the (x,y) of the touch if any, the same can be done for touchpad. Anything else is upper layers. Keys repeats for example are not handled in the button driver
14:10:19pamaurythus you cannot simply implement kinetic scrolling in the button driver
14:10:59pamaurythe way the touchscreen works is like this:
14:11:53pamauryeach screen (list, wps, etc) reports whether or not it can handle touchscreen. If not, a middle layer uses "gird mode" where it split the screen into 9 square buttons and the screen can pretend the device has 9 buttons
14:12:20pamauryif the screen handle touchscreen, it only gets (x,y) of touch and whether or not the user touches the screen, and it has to deal with it
14:13:03pamauryand what it usually does is that it looks for gesture, BUT if the user presses a point and release (ie like a click), it has to do something with it, because it's not a gesture
14:13:18pamauryso it handles like a regular UI, like a mouse click: is a button at (x,y) ?
14:13:31pamauryclearly this doesn't work with a touchpad
14:13:51pamauryif you do a "click" on a touchpad, this is not like a mouse, it's more like a button press
14:14:27 Join skapazzo [0] (~skapazzo@151.9.205.1)
14:14:37pamauryfurthernore, on a touchscreen, there is something obvious: the touchscreen as the same size as the screen, so the ui can "track" the finger to make the visual feedback consistent with what the user expects
14:15:22pamauryon a touchpad, there is no such relationship, in fact you really DONT want to rescale the coordinate to map the screen, because say you scroll your finger from top to bottom of the touchpad
14:16:12pamaurythen you expect the list to go down by the same "distance", so if you screen is 3 times bigger than the touchpad, a full top to bottom slide only move 1/3 of the screen, unless it's a flick and kinetic scrolling kicks in
14:16:39pamaurysummary: touchscreen and touchpad share some features, but the way they use them to provide a nice UI are fundamentally different to me
14:17:04jb__yes I agree. thanks for the explanation
14:17:34pamauryso the proper approach, which is not necessarily complicated, just needs some work, is to do like a touchscreen:
14:18:01pamauryeach screen reports whether it can handle touchpad (by default they don't so it's easy), if they do they have to do something about it
14:18:14pamauryand then you can most probably reuse some code from kinetic scrolling for touchpad
14:18:26jb__a new list implementation for touchpads like for touchscreens?
14:19:15pamauryyeah, they most probably share a lot of elements, but the list needs to know it's a touchpad
14:19:34jb__how would the list know touchpad coordinates?
14:20:10pamaurythe button driver would report them, like for touchscreen
14:23:04 Quit johnb2 (Quit: Nettalk6 - www.ntalk.de)
14:23:17BilgusPAMAURY I've beenn messing around with putting a marker at the end of the FW and I don't think it is going to work AFAICT .codec gets defined .plugin marks the end and then takes up everything after?
14:24:07pamauryBilgus: you need to get familar with linker script, there is a fundamental difference end of *binary* and end of *memory*
14:25:12pamaurythe end of the binary is never at the end of the linker file
14:25:15Bilgusah so really the binary stops before either of those
14:25:22pamauryyes
14:26:57jb__pamaury: it looks like coordinates might be put in higher bits by the touchscreen get_button_data(), then action_get_touchscreen_press() extracts them
14:27:24pamaurythat's how it works for touchscreen yes, the button data is used to report aux data
14:27:37 Nick zoid is now known as ClintonBot (~zoid@unaffiliated/taxationistheft)
14:28:41 Nick ClintonBot is now known as zoid (~zoid@unaffiliated/taxationistheft)
14:29:18 Join paulk-blaze [0] (~paulk@2001:67c:1810:f055:79f:d5f2:e5f4:4cab)
14:29:24pamauryBilgus: I can send you an example for the imx233 (like fuze+)
14:30:35jb__does every touchscreen get_button_data need to be ifdeffed, or does it not lead to chaos?
14:31:18pamauryjb__: I'm pretty sure the entire touchscreen code is ifdefed already
14:32:53pamauryjb__: if you want to work on that, I can send you a POC that create the touchpad mode and shows you where are the gaps to fill
14:34:07jb__pamaury: fantastic
14:34:58jb__pamaury: don't plugins use get_button_data(), for example?
14:36:30pamauryI don't remember, the thing is that button data is a generic mecanism to get aux button data but it only makes sense if you know how to interpret it. Thus I expect any use of get_button_data() is ifdef because otherwise it doesn't make sense
14:36:48jb__got it
14:37:01pamauryI think so far touchscreen is the only user of button data
14:37:33 Quit APLU (Ping timeout: 264 seconds)
14:39:27jb__it seems like more work than I was hoping for, but I'll look at this in my spare time. Touchpads make more sense than touchscreens for tiny devices, where touch areas are small and the fingers cover the screens
14:43:52 Quit paulk-blaze (Remote host closed the connection)
14:44:13 Join paulk-blaze [0] (~paulk@2001:67c:1810:f055:79f:d5f2:e5f4:4cab)
14:44:42pamauryjb__: to be honest I don't know how much touchscreen and kinetic scrolling are integrated. If they is some clean separation between them, it could be less work than expected
14:46:18jb__pamaury: ok, so what does the button driver need to do?
14:47:42jb__pamaury: there needs to be some detection as to what are taps, long presses, swipes ... smartphones wait until the finger is lefted to send a "click"
14:47:50pamaurywhat I will do in the POC I'll send you (maybe tomorrow) is to make the button driver do like touchscreen: it calls a library function that depending on touchpad mode either reports position or button. The difference with touchscreen is that the touchpad probably needs to give the callback the location of button "on the touchpad"
14:48:23pamaurythen in the list gui code, introduce a touchpad mode that only looks at position and decide what is gesture and what is not
14:48:58pamauryI expect the gesture code can be reused, after all it's the same thing on touchscreen and touchpad, but what you make of it is different
14:49:25 Quit gbl08ma (Remote host closed the connection)
14:49:37 Join APLU [0] (~mulx@eva.aplu.fr)
14:53:34 Join Senji [0] (~Senji@85.187.103.250)
14:55:52Bilguspamaury sure that would be helpful might explain why I init and can't find it in the binary
14:56:30pamauryBilgus: give me 5 min, I'll send you an example
14:56:43Bilgustake your time thanks
14:56:45***Saving seen data "./dancer.seen"
15:00
15:00:27pamauryBilgus: actually now that I am thinking about it, it may no be that easy for a non-obvious reason: many targets organize their binary like this:
15:00:27pamaury|code|data|code that goes to iram|data that goes to iram|
15:00:27pamaurybut when loaded to memory and initialise, it actually looks like:
15:00:27DBUGEnqueued KICK pamaury
15:00:27pamaury|code|data|bss|
15:00:27pamauryso the end of binary is overwritten in RAM.
15:00:29pamauryThe proper approach would be to store the header somewhere in the binary, but put the OFFSET to it at the end of the binary
15:00:47pamaurythat's what I will do in the example I'll send you
15:02:10Bilgusawesome thats probably it since I can place it higher and find it but each time I go further than data it disappears
15:04:41 Join smoke_fumus [0] (~smoke_fum@dynamic-vpdn-93-125-62-122.telecom.by)
15:11:06 Join furrywolf [0] (~randyg@72-57-27-185.pools.spcsdns.net)
15:15:26jb__what are the hopes of achieving left/right screen transitions, like on smartphones or ipod nano?
15:15:45furrywolfnone, hopefully.
15:16:00jb__there is need to render the next framebuffer just as the swipe is detected
15:16:18jb__furry: =)
15:18:12BilgusI doubt this would be much liked in the actual UI but maybe in a theme?
15:18:25pamauryjb__: transition, 0% if you want the left and right screen to smoothly transition. If you just think of "I swipe, it changes screen", that probably doable
15:22:08 Join MrZeus1 [0] (~MrZeus@2a02:c7f:7008:3400:b0e7:24b8:50fe:7a94)
15:22:32jb__ok
15:23:45 Quit MrZeus (Ping timeout: 255 seconds)
15:27:12pamauryBilgus: g#1551
15:27:14fs-bluebotGerrit review #1551 at http://gerrit.rockbox.org/r/1551 : Implement magic section. by Amaury Pouly
15:28:13pamauryit's implement for imx233 with a small example
15:29:43Bilgusawesome you make it look freaking easy
15:30:34 Quit paulk-blaze (Remote host closed the connection)
15:30:52 Join paulk-blaze [0] (~paulk@2001:67c:1810:f055:79f:d5f2:e5f4:4cab)
15:31:02pamauryBilgus: the trick is that each linker script is a bit different and needs to be modified carefully
15:32:51Bilgusyeah I see where they have different sections ahead/behind
15:34:50pamaurybasically it should be last section that is not a NOLOAD section
15:34:54pamaurythat's a good rule of dumb
15:37:27 Quit paulk-blaze (Ping timeout: 240 seconds)
15:45:51Bilgusnow since this has a pointer to the offset without need to search it doesn't need to be a string anymore correct I could now make it a long with a few bytes in it for verification correct?
15:46:25Bilgusthe actual data not the rbmagic0
15:48:21pamauryBilgus: yes, I still suggest you start the data in the magic section with a small (4-byte) magic value just in case
15:48:32pamaury(cause any failure would basically overwrte code, which is BAD)
15:49:37pamauryanother approach to this problem would be to modify crt0.S and make the bootloader pass a pointer to some aux data
15:49:51pamauryI think this would be cleaner
15:50:05pamauryI'll put another patch on gerrit to compare both approaches
15:55:18 Quit jb__ (Ping timeout: 260 seconds)
15:59:06Bilgus:\ you have other stuff to work on ill start investigating that haha I forgot this is all BE
16:00
16:17:30 Quit zoid (Quit: www.taxationistheft.com)
16:18:22 Join zoid [0] (~zoid@159.203.108.115)
16:19:40 Quit zoid (Changing host)
16:19:40 Join zoid [0] (~zoid@unaffiliated/taxationistheft)
16:28:19pamauryBilgus: there yet an approach
16:28:34pamaurysince on virtually all targets, the code in crt0.S is at the very beginning of RAM
16:28:56pamauryone could say that the boot data must within (say) the first 1024 bytes of the binary
16:29:01pamauryand simply put it in crt0.S
16:29:11pamaurythus the search for it is always quick and it's easy to implement
16:29:37pamaury*yet another
16:30:51Bilgusso keep the header intact and tag the data with magic but search for it
16:31:14pamauryyes, but you only look for it at the very beginning of the binary
16:31:26pamauryand it's up to the target crt0 code to figure out how to implement that
16:32:58pamauryit makes a lot of sense because basically it means "look for special header in the 1024 after entry point of binary"
16:33:36Bilgusnow how would I read the data though or would I just write the data I want init directly to the crt and let it init the var?
16:34:12pamaurylet me send you an example
16:35:35fs-bluebotBuild Server message: New build round started. Revision 96a7603, 255 builds, 17 clients.
16:35:38Bilgusno thats 'P amaury please show me how this works'
16:36:51pamauryone thing that is good about this approach is that you need to change all crt0.S BUT there are less than one per target
16:37:18pamauryalso it's essentially target agnostic because all assemblers support the same directives
16:41:36pamauryBilgus: are you familiar with gnu assembler ?
16:44:09BilgusI programmed TI calcs in it in HS and did some on a Heathkit HERO in HS so familiar with assembler yes fluent no
16:45:30fs-bluebotBuild Server message: Build round completed after 596 seconds.
16:45:31fs-bluebotBuild Server message: Revision 96a7603 result: All green
16:47:28pamauryI suggest you read ftp://ftp.gnu.org/old-gnu/Manuals/gas/html_chapter/as_7.html#SEC98 and http://www.cse.unsw.edu.au/~cs3221/labs/assembler-intro.pdf to understand the code I will post
16:47:46Bilgusk
16:56:49***Saving seen data "./dancer.seen"
17:00
17:01:43pamauryBilgus: g#1552
17:01:44fs-bluebotGerrit review #1552 at http://gerrit.rockbox.org/r/1552 : Add boot data support to rockbox. by Amaury Pouly
17:02:24lebelliumpamaury: you'll get probably a sample from the AGPtek rep but it's also available on Amazon.fr - €50 https://www.amazon.fr/Bluetooth-Lecteur-Musical-ROCKER-Memoire/dp/B01NBRJBOH/
17:02:28lebelliumI guess I'l buy it :D
17:05:27pamaurylebellium: we'll see, I answered on the forum. The player looks cool, I'll buy it if he doesn't send me a sample ;)
17:06:05pamauryBilgus: I included a small debug meny entry to view the data, just as a proof of concept
17:06:52pamauryhopefully the code is self-expanatory: we declare the C structure as extern and we implement it in the crt0.S
17:06:57BilgusNice I just pulled it that looks a lot cleaner already
17:06:59pamauryto share code, I implement use a assembler macro
17:07:22pamaurywhich should in theory work on all assemblers on all targets, so it's only a matter of adding "put_boot_data_here" in al crt0.s
17:07:38pamaurypossibly one could #ifdef all of that behind HAVE_BOOT_DATA
17:07:52pamauryyou need to choose a particular crc algorithm
17:08:03pamauryand then have the bootloader fill the structure of course
17:12:32BilgusI'll try this out and come back once I understand it better
17:16:39fs-bluebotBuild Server message: New build round started. Revision 501e8a7, 255 builds, 17 clients.
17:24:45fs-bluebotBuild Server message: Build round completed after 486 seconds.
17:24:46fs-bluebotBuild Server message: Revision 501e8a7 result: All green
17:24:47fs-bluebotBuild Server message: New build round started. Revision 1245c5f, 255 builds, 16 clients.
17:40:17fs-bluebotBuild Server message: Build round completed after 931 seconds.
17:40:18fs-bluebotBuild Server message: Revision 1245c5f result: All green
17:40:19fs-bluebotBuild Server message: New build round started. Revision d787191, 255 builds, 16 clients.
17:48:36fs-bluebotBuild Server message: Build round completed after 499 seconds.
17:48:37fs-bluebotBuild Server message: Revision d787191 result: All green
18:00
18:03:42 Join johnb2 [0] (~johnb2@p57B45CA3.dip0.t-ipconnect.de)
18:05:48johnb2Mihail: On the read-only internal memory, do you think there is a chance to remove the partition? Would the bootloader from early last year try to load RB from the SD card?
18:07:26 Quit PurlingNayuki (Remote host closed the connection)
18:08:54 Join PurlingNayuki [0] (~Thunderbi@113.82.116.170)
18:22:27 Quit johnb2 (Ping timeout: 258 seconds)
18:26:43 Join edhelas [0] (~edhelas@145.133.43.230)
18:31:03CtcpIgnored 1 channel CTCP requests in 0 seconds at the last flood
18:31:03*__builtin would love to help with a Rocker port... but I'm not sure if I'm qualified enough :/
18:31:13__builtindang it, verbs
18:32:59pamaury__builtin: I'll do the port, assuming they can provide at the datasheet for the soc
18:33:07pamaurys/datasheet/programming manual
18:33:58lebelliumThey necessarily have it or could they do their home firmware without?
18:34:48pamaurylebellium: I guess they could have done it without, if for example they bought the SDK from ingenic or hire ingenic to do the base port and they just did the cutomization
18:35:05pamauryingenic released some source for the X1000 but to be honest, code is a super annoying source of documentation
18:35:55lebelliumHe said they hired the FiiO team but I don't know if it was only for the customization
18:36:17pamauryyeah that needs to be clarified
18:38:02pamauryI need to search in ingenic FTP
18:38:03 Join ulmutul [0] (~chatzilla@dslb-188-102-002-126.188.102.pools.vodafone-ip.de)
18:38:10pamaurythey release a lot of doc but never advertise it
18:39:45*pamaury thinks he found it
18:39:54pamauryhttp://198.13.102.98/bj/ingenic_support/X1000_X1000E_X1500/02_HW/01_Phoenix/Phoenix_V2.0/03Datasheet/X1000_PM_20150918.pdf
18:42:07lebelliumnice!
18:42:54lebelliumby the way, it looks like the AGPTek Rocker is only a rebranded Benjie T6 http://www.benjie-tx.com/MP3HiFiPlayer/224.html
18:42:57__builtinit even tells you how to boot from USB :)
18:43:20pamauryapparently they didn't change the usb boot mode, that's cool
18:43:39lebelliumI'm confused now about what AGPtek really did
18:43:55lebelliumDid the take the existing hardware and just customized their own firmware?
18:44:01lebelliumthey*
18:45:13ulmutuljb__, pamaury: seems like someone may be interrested in g#1199 :)
18:45:15fs-bluebotGerrit review #1199 at http://gerrit.rockbox.org/r/1199 : POC Fuze+ Scrollstrip support by Sebastian Leonhardt
18:45:25pamauryulmutul: I know but I don't like the approach
18:45:59ulmutulWhy not?
18:46:24pamaurya scrollstrip on a touchpad doesn't feel very natural to me
18:46:47pamauryalso the way it is implemented is strange
18:46:55pamauryit doesn't reuse any of the scrollwheel code afaict
18:47:19pamauryI wouldn't be against a knob to select between button/scrollwheel/kinetic touchpad
18:47:36pamaurybut the scrollwheel should at least be implemented with the usual scrollwheel framework
18:49:29ulmutulHm, I don't know if the wheel framework would work for it. The wheel code for example don't support button actions afaict.
18:50:05ulmutulThe whole thing is more or less the atempt to write a scrollstrip framework (for strip targets mainly)
18:50:50pamauryah sorry, I thought that was the scrollwheel patch ;)
18:50:58pamauryok but then my reproch is the same
18:51:03pamaurythis is way too low level
18:51:24 Join maffe [0] (~Miranda@p3EE3A0F9.dip0.t-ipconnect.de)
18:51:39 Nick maffe is now known as bufgix (~Miranda@p3EE3A0F9.dip0.t-ipconnect.de)
18:51:44pamaurythe proper approach, I believe, is to do like touchscheen: it has to be handle at the UI level so you can properly implement things like kinetic scrolling
18:52:22pamaurythis what I'm working on right now, at least a POC
18:56:50***Saving seen data "./dancer.seen"
18:57:39ulmutulI postet at the forums some time again: http://forums.rockbox.org/index.php/topic,51426.0.html
18:57:40ulmutulWhoever want's to test the touch can download a compiled built. I'm still waiting for feedback about the best way to handle long button presses ;)
18:59:15*ulmutul will look how it's done for touchscreens.
19:00
19:01:04ulmutulpamaury: have you tested it yet?
19:01:16pamauryno
19:02:20pamaurybut in the worst case, it is possible to have a setting between various modes, like touchscreen
19:10:43 Quit markun (Quit: leaving)
19:11:06 Join jhMikeS [0] (~jethead71@d192-24-173-177.try.wideopenwest.com)
19:15:41pamaurybut I'll try the patch
19:16:15lebelliumI feel quite fooled actually. I thought they selected some proper hardware for Rockbox and designed the player around it. But they only choose which existing device to rebrand...
19:16:40pamauryyeah sounds weird
19:28:31lebelliumI'll see if I cancel my order to get the original device cheaper when it getsreleased on some Chinese webshop like aliexpress
19:28:36Bilguspamaury i'm sorry to bother you again I'm trying to make the fuze+ imx boot loader and I keep having problems making the mkimxboot
19:29:04pamauryBilgus: you'll have to be more precise ;)
19:30:27pamauryBilgus: most probably you are missing some libs ?
19:30:31Bilgussbtools and undefined reference to `vtable for CryptoPP::HashTransformation
19:31:02Bilgusubuntu@ubuntu-VirtualBox:~$ whereis libcryptopp.a
19:31:02Bilguslibcryptopp: /usr/lib/libcryptopp.so /usr/lib/libcryptopp.a
19:31:02Bilgusubuntu@ubuntu-VirtualBox:~$ whereis crypto.cpp
19:31:02DBUGEnqueued KICK Bilgus
19:31:02Bilguscrypto: /usr/src/linux-headers-3.2.0-113/crypto /usr/src/linux-headers-3.2.0-113-generic/crypto /usr/share/man/man3/crypto.3ssl.gz
19:31:02Bilgusubuntu@ubuntu-VirtualBox:~$
19:31:39pamaurysmells like a linker order problem with old gcc, wait a minute
19:32:55pamauryBilgus: in rbutil/mkimxboot/Makefile, try to replace
19:32:55pamauryLDFLAGS += -lcrypto++
19:32:55pamauryby
19:32:55pamauryLDOPTS += -lcrypto++
19:34:06BilgusLOL
19:34:44Bilgusthat was it like 2 seconds
19:36:44Bilgusthanks I think i would have never figured that out
19:45:35pamauryBilgus: if you want to speed up dev, you can use mkimxboot to create a singleboot image, and then upload in a recovery mode using sbloader
19:45:58pamauryit avoids the flashing stage (but of course needs to be done on each boot)
19:46:51Bilgushmm then I assume if it crashes I'm able to revert on next reboot?
19:47:55pamauryyou can always use the OF to reflash (as long as you flash dualboot image)
19:48:08pamaurythe advantage of using recovery mode that it avoid flashing, thus is much faster
19:51:11Bilgussounds nice, i'll try that
19:51:34pamauryjust make sure you don't flash the singleboot image, that would be longer to recover
19:55:48Bilgusok so make a single boot image to use sbloader just besure not to actually flash it to the device then?
19:56:31pamauryyes
19:56:48pamauryto make singleboot image, do mkimxboot -i ... -b ... -o ... -t singleboot
20:00
20:07:00 Quit PurlingNayuki (Quit: PurlingNayuki)
20:07:15 Join PurlingNayuki [0] (~Thunderbi@113.82.116.170)
20:36:14 Quit igitoor_ (Ping timeout: 258 seconds)
20:38:59 Join igitoor [0] (igitur@2a00:d880:3:1::c1ca:a648)
20:39:58Bilguspamaury BOOT_DATA_SEARCH_SIZE how is that guaranteed to be the case just a general assumption based on the size of our firmware?
20:44:22Bilgusnm I just realized its the placement within the crt file
20:45:37 Quit igitoor (Changing host)
20:45:37 Join igitoor [0] (igitur@unaffiliated/contempt)
20:48:38pamauryBilgus: yeah placement in the file
20:49:26pamaury1024 gives you about 256 instructions, I doubt any crt file uses more than, so if you just put it after the last instruction in crt0 it should be within the window
20:50:01lebelliumpamaury: Benjie T6 marketed but looks like it's called K1 internally, what a mess... https://f.lnwfile.com/_/f/_raw/n0/x8/s7.jpg
20:52:26pamaurylebellium: lol indeed
20:53:14pamaurylebellium: isn't the agptek supposed to come with a touchpad/touchwheel ?
20:54:07pamauryah apparently not
20:54:44pamauryI am kind of confused about how the chinese market works anyway, they seem to have clones of clones of clones
20:56:54***Saving seen data "./dancer.seen"
21:00
21:06:00lebelliumI hope the AGPTek rep will explain a bit about their business
21:06:20lebelliumbut that will probably be confusing as all his earlier posts
21:25:46 Join Strife89 [0] (~quassel@adsl-98-80-194-33.mcn.bellsouth.net)
21:28:06 Quit Strife1989 (Ping timeout: 255 seconds)
21:30:10dongslol clone of clones
21:30:18dongsyoure not wrong there
21:53:51 Quit bufgix (Quit: IRC ist obsolet!)
22:00
22:01:24 Quit edhelas (Ping timeout: 255 seconds)
22:05:47 Quit michaelni (Ping timeout: 240 seconds)
22:11:00 Join wodz [0] (~wodz@89-74-169-198.dynamic.chello.pl)
22:11:59 Join girafe [0] (~girafe@LFbn-1-11729-221.w2-7.abo.wanadoo.fr)
22:13:44wodzpamaury: Did looled at x1000 pm to see how much of the blocks from earlier families are reused?
22:14:20pamaurywodz: not yet
22:15:29wodzpamaury: It has 2nd level cache which afaik was missing in earlier families
22:16:26pamaurywodz: a quick look suggest some blocks are similar but overall there might be many differences
22:18:28pamauryyeah the L2 cache is new
22:18:33 Join michaelni [0] (~michael@213-47-41-20.cable.dynamic.surfer.at)
22:19:04pamaurythat will need special care potentially, the manual says "Programmer transparent, that is, those CACHE instructions
22:19:04pamaurymanaging L1 cache can manipulate L2 cache automatically"
22:19:08pamaurydon't know what it means
22:19:22wodzugh
22:20:15wodzpamaury: It says it is mips32r2 compatible core :)
22:20:20 Join Strife1989 [0] (~quassel@adsl-98-67-60-3.mcn.bellsouth.net)
22:21:05pamaurywodz: non full pipelined implementation for most of MIP32 integer instruction release II
22:21:18pamauryI say, wait until I test
22:21:28wodzpamaury: yeah
22:21:33pamaurybecause jz4760b claims to be mips32r2 and doesn't implement some stuff
22:24:20 Quit Strife89 (Ping timeout: 264 seconds)
22:24:23pamaurywhat would be helpful is if they can send me sample player and one with debug stuff wired
22:24:40pamauryassuming they even have it
22:28:05wodzpamaury: That depends how they approached firmware port. If it was only customization they might not have it
22:34:05Bilguspamaury how robust do you think my checksum needs to be can do a simple xor of magic0,1 length and payload or should I be looking for something better?
22:41:14pamauryBilgus: I think the checksum should only consider the payload, and I don't think it needs to be super robust, but just make sure that the initial configuration (ie what put_oot_data_here) is invalid, so the code can detect that the bootloader didn't touch the boot data
22:42:36pamaurya sum sounds better that a xor in this case I think
22:42:43Bilgusohh I wa planning on using that to verify we had the right information before writing with the boot loader
22:42:45pamaurywodz: any suggestion on that ?
22:43:27wodzpamaury: could you give a bit of context?
22:45:26pamauryBilgus is implementing a mecanism by why the bootloader can pass some data to the firmware. The goal is for the bootloader to tell rockbox what the volume to mount as /, and so to be able to boot from SD.
22:45:50pamauryThe implementation I suggested is g#1551
22:45:52fs-bluebotGerrit review #1551 at http://gerrit.rockbox.org/r/1551 : Implement magic section. by Amaury Pouly
22:46:15pamauryerr, g#1552
22:46:17fs-bluebotGerrit review #1552 at http://gerrit.rockbox.org/r/1552 : Add boot data support to rockbox. by Amaury Pouly
22:46:51pamauryrockbox embeds a structure with a magic value, then a length, crc and payload, and the bootloader fills this payload before jumping to the firmware
22:48:23wodzthat sounds sane so far
22:48:38pamauryand the question is: what kind of crc to use
22:49:56wodzthat depends how much space in bootloader can we afford. crc32 is not usually big and is already present in main binary
22:51:09pamauryI don't know if crc32 is already compiled in the bootloader or not
22:51:12CtcpIgnored 1 channel CTCP requests in 0 seconds at the last flood
22:51:12*pamaury checks
22:51:16Bilgushere is what I have so far http://pastebin.com/tFRk77qv
22:52:22pamauryBilgus: I think crc32 is already compiled in anyway, so it's a good choice indeed
22:53:41 Join ZincAlloy [0] (~Adium@2a02:8108:8b80:1700:e818:b30d:c507:6059)
22:53:48pamauryBilgus: I have many comments ;)
22:54:15Bilgusdo tell..
22:56:54pamauryI suggest you push to gerrit but basically:
22:56:54pamaury- crc should apply to all payload: bootdata->crc = crc32(crc->payload, crc->length); // not sure about crc_32 prototype
22:56:54pamaury- why 0x52622300 | boot_volume and not just boot_volume ?
22:56:54pamaury- regarding boot_volume, I'm not 100% sure how you plan to implement the "mount Nth volume as /" part, but we'll see
22:56:54pamaury- for(i = 0;i <= (BOOT_DATA_SEARCH_SIZE - sizeof(struct boot_data_t));i++) -> why BOOT_DATA_SEARCH_SIZE - sizeof(struct boot_data_t) ?
22:56:56pamaury- if (len < BOOT_DATA_SEARCH_SIZE) -> why
22:56:57***Saving seen data "./dancer.seen"
22:56:58pamauryfor the last two things, I would rewrite the loop as:
22:57:00pamauryint search_len = MIN(len, BOOT_DATA_SEARCH_SIZE);
22:57:02pamauryfor(i = 0;i <= (search_len - sizeof(struct boot_data_t));i++)
22:57:52pamauryalso don't forget to memset(payload, 0, len)
22:59:27Bilgus| with the boot_volume is just to allow there to be something in there to check against since its at most a single byte
22:59:58Bilgusfigure it typically will be 0 or 1 maybe 2
23:00
23:01:03pamauryBilgus: with the crc check that's kind of useless no ?
23:01:10pamauryor just make boot volume a uint8_t
23:01:38Bilgusill return the actual volume name with get_volume_name(x, buf); once in the firmware
23:01:45pamauryregarding boot volume, depending on the implementation, I am not sure it should be the boot volume actually
23:02:16pamaurybut that depends on how it's implemented
23:03:44Bilgusif I'm only going to use uint_8 the payload gets way smaller still is there anything else you think I should be passing?
23:04:40Bilguswhat do you mean the boot volume actually? you think instead we should be passing back the string <MICROSD0>/.rockbox or something?
23:06:26pamauryBilgus: not it's doesn't make sense to give the string. What I'm saying is that multidrive => multivolume, so in theory there can even be multiple volume on each drive. So the only way you can find the "Nth volume" is to try to mount all partition in the usual order, but then volume 0 will be / and you wanted volume N so you'll have to "exchange" them, if that makes sense
23:06:33pamauryjust look at disk.c
23:06:55*pamaury looks to be sure
23:08:03pamauryyeah in disk_mount
23:08:15pamaurythere isn't a one to one relationship between drive and volume
23:08:56Bilgusno in multi volume its drives * num of volumes
23:10:16pamauryso what I'm saying is that if I give you a volume number
23:10:27pamaurythere is no easy way to find even on which drive it is
23:10:57BilgusAh short of looking at all the drives? I'm not sure how else to derive the booted volume
23:11:25 Quit wodz (Quit: Leaving)
23:11:46pamauryBilgus: I don't know enough about how volume integrate with the file system to be honest
23:11:47Bilgusfigure In that other commit I have up on gerrit it just tries MAx_drives to 0 till it finds the one that sticks
23:12:00BilgusMax_volumes*
23:13:52Bilgusprobably be a good idea to talk to Michael I forget what his IRC handle is he says I had a thing started in the filesystem code that would allow any one volume to be mounted as the root directory (obviously only one because names could conflict if more are allowed). Would that help here?
23:15:08pamauryyes jhMikeS probably knows how to do that
23:16:12BilgusI suppose another idea is to pass back out a lookup array that will map element 0 to this boot drive 1 to the internal etc
23:20:16pamaurythat's too complicated
23:21:14pamaurylet's wait and see what jhMikeS says
23:21:45BilgusIll ask jhMikeS what he needs to remap
23:35:27Bilgusthanks for the guidance pamaury I'd still be stuck fiddling around with the linker
23:48:22jhMikeSaye, you actually got me interested in completing it :)
23:48:53Bilguswhat do i need to send to your function from the bootloader?
23:49:13jhMikeScan you explain?
23:49:51Bilgusgive me a few i'm heading out i'll get on my phone
23:49:59jhMikeSokay
23:51:45pamauryBilgus: I'm going to bed but you should push to gerrit, updated my patch with your stuff, so that we can have an overview

Previous day | Next day