In this PCL context, you are looking at either PCL5c that you are using now where you just send all 24bits per pixel to the printer raw, and the printer does the necessary dithering etc. so you end up with a reasonable image.
The Photosmart, I believe, is proprietary to HP and there is no information available as to its requirements.
That leaves us with PCL3 color printers, historically used by the vast majority of PCL inkjet printers. Today of course, many of the new printers don't speak PCL at all.
Where a PCL5c printer, as per the CID specs accepts the raster data in a single plane as such, and converts the pixels to their appropriate CMY values.
A PCL3 printer requires that you separate each of 3 components into invididual planes that when overlaid on top of each other will produce the image. Basically, you derive 3 monochrome images from that color data, dither them for printing, then combine the 3 planes back together, one row at a time, to send to the printer.
Assuming no compression, a single raster row will look like....
<esc>*b150V Data (cyan layer)
<esc>*b150V Data (magenta layer)
<esc>*p150W Data (yellow layer)
Note that the first two planes commands end with a "V" which tells the printer NOT to increment the row. Only when the command ends with the "W" is the row incremented. Then the process repeats until all rows are done and the image is complete.
In the past, I have made an image this way and it prints quite nicely on one printer, but looks terrible when printed on a different. You are basically trying to create a PCL file that is all things to all printers. It's a lot of work.
Of course non HP compatible printers are out of the question.